Mark H Weaver <[email protected]> skribis:

> [email protected] (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