unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
From: ludo@gnu.org (Ludovic Courtès)
To: Mark H Weaver <mhw@netris.org>
Cc: guile-devel@gnu.org
Subject: Re: [PATCH] psyntax: custom ellipses using 'with-ellipsis' or R7RS syntax-rules
Date: Fri, 10 Jan 2014 14:02:09 +0100	[thread overview]
Message-ID: <87bnzkour2.fsf@gnu.org> (raw)
In-Reply-To: <87fvowwy8r.fsf@netris.org> (Mark H. Weaver's message of "Thu, 09 Jan 2014 18:07:16 -0500")

Mark H Weaver <mhw@netris.org> skribis:

> ludo@gnu.org (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	other threads:[~2014-01-10 13:02 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-12-19  0:33 [PATCH] psyntax: custom ellipses using 'with-ellipsis' or R7RS syntax-rules Mark H Weaver
2014-01-08 11:41 ` Ludovic Courtès
2014-01-08 20:10   ` Mark H Weaver
2014-01-08 20:53     ` Ludovic Courtès
2014-01-09 23:07       ` Mark H Weaver
2014-01-10 13:02         ` Ludovic Courtès [this message]
2014-01-10 17:08           ` Mark H Weaver
2014-01-10 20:36             ` Ludovic Courtès

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/guile/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87bnzkour2.fsf@gnu.org \
    --to=ludo@gnu.org \
    --cc=guile-devel@gnu.org \
    --cc=mhw@netris.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).