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)

Re: Some initial comments Andrew Tropin 21 Sep 2026 07:10 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