guile-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] psyntax: custom ellipses using 'with-ellipsis' or R7RS synta


From: Ludovic Courtès
Subject: Re: [PATCH] psyntax: custom ellipses using 'with-ellipsis' or R7RS syntax-rules
Date: Fri, 10 Jan 2014 14:02:09 +0100
User-agent: Gnus/5.130007 (Ma Gnus v0.7) Emacs/24.3 (gnu/linux)

Mark H Weaver <address@hidden> skribis:

> address@hidden (Ludovic Courtès) writes:

[...]

>> Actually my question was more about the ellipsis escaping form
>> (... ...).  It is affected by ‘with-ellipsis’, right?
>
> Yes, so the following works:
>
>   (define-syntax define-inline
>     (with-ellipsis ---
>       (syntax-rules ()
>         ((_ (name parms ---) exp ---)
>          (define-syntax name
>            (with-ellipsis (--- ---)
>              (syntax-rules ()
>                ((_ args (--- ---))
>                 ((lambda (parms ---) exp ---)
>                  args (--- ---))))))))))


Sorry I wasn’t clear.  Does this work:

  (define-syntax define-inline
    (with-ellipsis ---
      (syntax-rules ()
        ((_ (name parms ---) exp ---)
         (define-syntax name
           (with-ellipsis ---                  ; <- note here!
             (syntax-rules ()
               ((_ args (--- ---))
                ((lambda (parms ---) exp ---)
                 args (--- ---))))))))))

IOW, does the escaping syntax adjust to the current ellipsis?

> Needless to say, the whole point of custom ellipses is to avoid having
> to ever escape ellipses, but you can still do it.

Yes of course; that’s an academic question to satisfy my curiosity.

>>> Note that as currently implemented, the effect of 'with-ellipsis'
>>> also does not propagate into nested syntax definition forms such as
>>> 'let-syntax', 'letrec-syntax', and 'define-syntax'.  We could go either
>>> way on this.
>>
>> Well, I think it’s fine this way, but then again I’ve been living in
>> world without that feature.  ;-)
>>
>> How does R7RS syntax-rules behave in that respect?  I guess we should
>> just follow suit.
>
> In R7RS, custom ellipsis is not part of the lexical environment, and
> thus does not propagate at all.  A custom ellipsis affects only the
> patterns and templates of the 'syntax-rules' macro it is passed to.
>
> I ended up making the effect of 'with-ellipsis' propagate into syntax
> definition forms, since the semantics seem simpler to me.

OK.

So does that mean that in the example above the second ‘with-ellipsis’
can now be omitted, or is it limited to ‘let...-syntax’?

> I pushed this and the 'syntax-error' patch to stable-2.0.

Great, thank you!

Ludo’.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]