In favor of explicit argument
Shiro Kawai
(09 Aug 2020 01:33 UTC)
|
Re: In favor of explicit argument
Lassi Kortela
(09 Aug 2020 06:46 UTC)
|
Re: In favor of explicit argument
Marc Nieper-Wißkirchen
(09 Aug 2020 09:27 UTC)
|
Re: In favor of explicit argument
Adam Nelson
(10 Aug 2020 22:25 UTC)
|
Re: In favor of explicit argument
Shiro Kawai
(10 Aug 2020 23:46 UTC)
|
Re: In favor of explicit argument
Marc Nieper-Wißkirchen
(11 Aug 2020 07:58 UTC)
|
Re: In favor of explicit argument
Alex Shinn
(11 Aug 2020 01:29 UTC)
|
Re: In favor of explicit argument
Marc Nieper-Wißkirchen
(11 Aug 2020 07:17 UTC)
|
Re: In favor of explicit argument
Jim Rees
(11 Aug 2020 16:45 UTC)
|
Re: In favor of explicit argument
Marc Nieper-Wißkirchen
(11 Aug 2020 16:57 UTC)
|
Re: In favor of explicit argument
Alex Shinn
(12 Aug 2020 02:20 UTC)
|
Re: In favor of explicit argument
John Cowan
(12 Aug 2020 02:49 UTC)
|
Re: In favor of explicit argument
Arthur A. Gleckler
(12 Aug 2020 03:23 UTC)
|
Re: In favor of explicit argument
Marc Nieper-Wißkirchen
(12 Aug 2020 13:29 UTC)
|
Re: In favor of explicit argument
Marc Nieper-Wißkirchen
(12 Aug 2020 19:46 UTC)
|
Re: In favor of explicit argument
Alex Shinn
(13 Aug 2020 00:40 UTC)
|
Re: In favor of explicit argument
Marc Nieper-Wißkirchen
(13 Aug 2020 07:18 UTC)
|
Re: In favor of explicit argument
Alex Shinn
(14 Aug 2020 01:24 UTC)
|
Re: In favor of explicit argument
Adam Nelson
(13 Aug 2020 01:13 UTC)
|
Re: In favor of explicit argument
John Cowan
(13 Aug 2020 01:53 UTC)
|
Re: In favor of explicit argument
Adam Nelson
(13 Aug 2020 03:09 UTC)
|
Re: In favor of explicit argument
Alex Shinn
(13 Aug 2020 03:16 UTC)
|
Re: In favor of explicit argument
John Cowan
(13 Aug 2020 03:31 UTC)
|
Re: In favor of explicit argument
Marc Nieper-Wißkirchen
(13 Aug 2020 08:04 UTC)
|
Re: In favor of explicit argument
Jim Rees
(13 Aug 2020 18:24 UTC)
|
Re: In favor of explicit argument
Marc Nieper-Wißkirchen
(13 Aug 2020 20:05 UTC)
|
Re: In favor of explicit argument
John Cowan
(14 Aug 2020 02:41 UTC)
|
Re: In favor of explicit argument
Marc Nieper-Wißkirchen
(14 Aug 2020 06:34 UTC)
|
Re: In favor of explicit argument Marc Nieper-Wißkirchen (14 Aug 2020 13:30 UTC)
|
Re: In favor of explicit argument
Marc Nieper-Wißkirchen
(14 Aug 2020 14:08 UTC)
|
Re: In favor of explicit argument
Alex Shinn
(15 Aug 2020 22:56 UTC)
|
Re: In favor of explicit argument
Marc Nieper-Wißkirchen
(16 Aug 2020 07:55 UTC)
|
Re: In favor of explicit argument
Alex Shinn
(14 Aug 2020 02:29 UTC)
|
PS One more argument for "define-auxiliary-syntax" is that it is the more primitive construct vs. the magic module. Some later SRFI may specify a general mechanism how to user-define auto-generated modules (like the cxr or the auto module). In this case, the library (srfi 206 *) could be implemented through this mechanism and the primitive "define-auxiliary-syntax". I think this is very much in line with the Scheme philosophy. (And for a general adapter macro translating between symbol keywords to hygienic keywords in the sense of SRFI 177, we need the local "define-auxiliary-syntax" anyway.) Am Fr., 14. Aug. 2020 um 08:33 Uhr schrieb Marc Nieper-Wißkirchen <xxxxxx@nieper-wisskirchen.de>: > > John, thank you very much for your comments. > > Am Fr., 14. Aug. 2020 um 04:41 Uhr schrieb John Cowan <xxxxxx@ccil.org>: > > > Suddenly you are talking about *equal* bindings, but until now (and in R[67]RS) it's about the bindings being the *same binding*. That is, bound in one library (foo) and imported directly or indirectly from (foo) in all other libraries that use it. Importing two libraries with *distinct* bindings is an error and is usually reported either by signaling an error or by reporting a warning. It is not enough that the bindings are verbally identifiable: if (foo) defines `plus` with (define plus +) and (bar) does the same, then it is impossible to import both (foo) and (bar), because `plus` does not have the same binding in the two libraries. > > Technically, we are talking about equivalence in the sense of > "free-identifier=?" of the appendix to R4RS and the R6RS standard > libraries. I wanted to avoid this term, so I wrote just "equal > binding" (in the sense of "same binding") but I will amend this as it > obviously led to confusion. > > So, we are not inventing a third identifier equivalence (besides > "free-identifier=?" and "bound-identifier=?") here, but we are just > talking about the former. As you write, identifiers whose bindings > refer to different locations, where just the stored values are > equivalent (in the sense of "eq?", "eqv?" or "equal?") are not > interesting. > > > This is why the (auto) library is good whereas the define-auxiliary-syntax macro is bad. The library provides a single binding that all other libraries can import, and exactly how it is bound isn't important. We have shown that it can be done with a simple syntax-rules definition, and anything fancier is just gravy. Define-aux-syntax, though, attempts to introduce a novel (and unnecessary) notion of *equal* bindings, and should be left out altogether. > > This point does not apply as no novel equality is introduced here. I > am sorry for the confusion and will amend the document accordingly. > > Actually, introducing the same binding (in the sense of > "free-identifier=?") is nothing novel. Chez, for example, has the > "alias" form, which exactly does this, namely giving an identifier the > same binding as an existing identifier in scope. (It's a nice feature, > which I have already used.) > > Operationally, in the expander model of Dybvig, two bound identifiers > are "free-identifier=?" if and only if they have the same label. > > I hope this explanation helps to see that the local binding form > "define-auxiliary-syntax" does no more magic than a local import of > the magic "auto" library would do.