|
Some initial comments
Daphne Preston-Kendal
(04 Apr 2026 10:01 UTC)
|
|
Re: Some initial comments
Andrew Tropin
(07 Apr 2026 11:29 UTC)
|
|
Re: Some initial comments
Daphne Preston-Kendal
(29 Jul 2026 20:17 UTC)
|
|
Re: Some initial comments
Vincent Manis (he/him)
(29 Jul 2026 21:03 UTC)
|
|
Re: Some initial comments
Wolfgang Corcoran-Mathe
(01 Aug 2026 16:16 UTC)
|
|
Re: Some initial comments
Andrew Tropin
(13 Aug 2026 06:12 UTC)
|
|
Re: Some initial comments
Andrew Tropin
(13 Aug 2026 06:03 UTC)
|
|
Re: Some initial comments
Daphne Preston-Kendal
(19 Aug 2026 06:49 UTC)
|
|
Re: Some initial comments
Andrew Tropin
(02 Sep 2026 12:17 UTC)
|
|
Re: Some initial comments
Daphne Preston-Kendal
(07 Sep 2026 08:18 UTC)
|
|
Re: Some initial comments
Andrew Tropin
(09 Sep 2026 11:04 UTC)
|
|
Re: Some initial comments
Andrew Tropin
(20 Sep 2026 08:44 UTC)
|
|
Re: Some initial comments
Daphne Preston-Kendal
(20 Sep 2026 19:30 UTC)
|
|
Re: Some initial comments Andrew Tropin (21 Sep 2026 07:11 UTC)
|
|
Re: Some initial comments
Daphne Preston-Kendal
(21 Sep 2026 18:55 UTC)
|
|
Re: Some initial comments
Andrew Tropin
(28 Sep 2026 05:08 UTC)
|
On 2026-09-20 21:30, Daphne Preston-Kendal wrote: > On 9 Sep 2026, at 13:04, Andrew Tropin <xxxxxx@trop.in> wrote: > >> Could you draft a basic skeleton of the macro which recognizes metadata >> and non-metadata cases, please? > > (define-syntax metadata (syntax-rules ())) ; this is your aux syntax keyword, export it > > (define-syntax test > (syntax-rules (metadata) > ((_ descr (context) (metadata metadata-expr) body_0 body_1 ...) > 'case-with-metadata-and-context) > ((_ descr () (metadata metadata-expr) body_0 body_1 ...) > 'case-with-metadata-only) > ((_ descr (context) body_0 body_1 ...) > 'case-with-context-only) > ((_ descr () body_0 body_1 ...) > 'case-with-neither))) Hello! Thank you for the snippet and thoughts. I still not hundred precent sure, but intuitevly leaning towards it more and more. I have a migration to this syntax half-way done during my experimentations, so it's very likely I will publish updates to SRFI and its implementations soon. Have a few more questions. (let ((metadata identity)) (test "my test" () (metadata '((default . meta))) (is #t))) will silently "remove" metadata from test. Is it expected behavior for scheme macro? Do we need to warn user of the macro somehow if they do it? Could you share some examples of similar macros in the wild? They can help me to better understand how idiomatic scheme macros look like. Previously I thought that `(guix records)` were idiomatic, but it seems they are not. > >> Also, I would really appreciate if you could provide a sample, >> demonstrating a mentioned problem (and corresponding Scheme/environment >> info), so I can run it locally and ensure the final implementation won't >> suffer from it. > > If you fill out the example I gave of how calling > set-default-test-runner! in a library isn’t guaranteed to have any > effect with some code to make it a useful test runner, then you should > be able to observe on Chez Scheme that the set-default-test-runner! > call doesn’t have any effect unless some identifier from the spiffing > test runner library is actually invoked by the program (rather than > depended on implicitly). > > Likewise, a library (not a program, I don’t think) of tests defined in Chez Scheme will fail to compile with your approach to implementing matching ‘metadata’. > > > Daphne > -- Best regards, Andrew Tropin