From: Mark H Weaver <mhw@netris.org>
To: "Marc Nieper-Wißkirchen" <marc@nieper-wisskirchen.de>
Cc: guile-devel@gnu.org
Subject: Re: Feature request: Expose `ellipsis?' from psyntax.ss
Date: Fri, 23 Nov 2018 02:55:41 -0500 [thread overview]
Message-ID: <87d0qwqlbb.fsf@netris.org> (raw)
In-Reply-To: <CAEYrNrRozViLCmgCyzPpqCxwJobt0oZPycf4o6wUR2h1ohCnpg@mail.gmail.com> ("Marc \=\?utf-8\?Q\?Nieper-Wi\=C3\=9Fkirchen\=22's\?\= message of "Wed, 21 Nov 2018 09:40:36 +0100")
Hi Marc,
Marc Nieper-Wißkirchen <marc@nieper-wisskirchen.de> writes:
> Am Mi., 21. Nov. 2018 um 04:38 Uhr schrieb Mark H Weaver <mhw@netris.org>:
>
> > Ellipsis identifiers are a bit more tricky, because unlike other
> > bindings, the user-visible ellipsis identifiers are not actually
> > substituted. We can't do that because ellipsis identifiers can be used
> > for other purposes, e.g. bound to ordinary variables or macros, and
> > these two ways of binding ellipsis identifiers should not shadow each
> > other.
Sorry, this was a weak argument. I've since remembered the _actual_
reason that it needs to be done this way:
In general, for any sensible binding form, bindings with different names
should not shadow each other. For example, a binding for 'E' should not
shadow a binding for 'F'.
If you try to model (with-ellipsis E BODY) as binding 'E', then it is
not a sensible binding form in this sense. Unlike any sensible binding
form, (with-ellipsis E BODY) should not only shadow outer bindings of
'E', but *any* outer ellipsis binding, whether '...' or 'F' or something
else. In other words, in this model, there can be only one binding of
this kind in a given lexical context.
Therefore, I think this is a bad model for 'with-ellipsis'.
I think it makes more sense to model (with-ellipsis E BODY) as
introducing a new lexical binding with a fixed name. CURRENT-ELLIPSIS
would be a good name if we wanted to make it part of the public API. In
this model, 'E' becomes the _value_ of the binding, instead of the
binding's name.
Does that make sense?
Note that in this later model, it's not natural for (with-ellipsis E
BODY) to shadow a binding for 'E' or vice versa, because 'E' is not
actually the thing being bound by 'with-ellipsis'.
In theory, we could introduce additional mechanisms to force
(with-ellipsis E BODY) to shadow bindings for 'E' and vice versa. This
would entail changing *every* binding form to check if the identifier
being bound matches the current binding of CURRENT-ELLIPSIS, and if so,
somehow invalidating the ellipsis binding. It's not obvious what should
be done in this case.
We could do something like this, but in my view, it would be an ad-hoc
addition to the semantics in order to support the inadequate mental
model where (with-ellipsis E BODY) is thought of as binding 'E'.
What do you think?
Mark
next prev parent reply other threads:[~2018-11-23 7:55 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-14 13:16 Feature request: Expose `ellipsis?' from psyntax.ss Marc Nieper-Wißkirchen
2018-11-14 19:10 ` Mark H Weaver
2018-11-14 20:27 ` Marc Nieper-Wißkirchen
2018-11-15 9:38 ` Mark H Weaver
2018-11-15 10:03 ` Marc Nieper-Wißkirchen
2018-11-15 10:59 ` Mark H Weaver
2018-11-15 19:41 ` Marc Nieper-Wißkirchen
2018-11-16 0:00 ` Mark H Weaver
2018-11-16 13:37 ` Marc Nieper-Wißkirchen
2018-11-16 23:36 ` Mark H Weaver
2018-11-17 15:03 ` Marc Nieper-Wißkirchen
2018-11-21 3:37 ` Mark H Weaver
2018-11-21 8:40 ` Marc Nieper-Wißkirchen
2018-11-21 16:09 ` Marc Nieper-Wißkirchen
2018-11-23 7:55 ` Mark H Weaver [this message]
2018-11-23 21:06 ` Marc Nieper-Wißkirchen
2018-11-23 20:25 ` Mark H Weaver
2018-11-23 21:28 ` Marc Nieper-Wißkirchen
2018-11-24 9:08 ` Marc Nieper-Wißkirchen
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=87d0qwqlbb.fsf@netris.org \
--to=mhw@netris.org \
--cc=guile-devel@gnu.org \
--cc=marc@nieper-wisskirchen.de \
/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).