Keywords reduced Lassi Kortela (18 Oct 2019 15:25 UTC)
Re: Keywords reduced John Cowan (18 Oct 2019 20:48 UTC)
Re: Keywords reduced Lassi Kortela (18 Oct 2019 22:24 UTC)
Re: Keywords reduced Marc Nieper-Wißkirchen (19 Oct 2019 08:26 UTC)
Re: Keywords reduced Shiro Kawai (19 Oct 2019 09:25 UTC)
Re: Keywords reduced Lassi Kortela (19 Oct 2019 09:38 UTC)
Re: Keywords reduced Marc Nieper-Wißkirchen (19 Oct 2019 12:22 UTC)
Re: Keywords reduced Shiro Kawai (19 Oct 2019 18:43 UTC)
Re: Keywords reduced Marc Nieper-Wißkirchen (20 Oct 2019 08:39 UTC)
Re: Keywords reduced Lassi Kortela (20 Oct 2019 09:28 UTC)
Re: Keywords reduced Shiro Kawai (20 Oct 2019 10:12 UTC)
Re: Keywords reduced Shiro Kawai (20 Oct 2019 10:17 UTC)
Re: Keywords reduced Lassi Kortela (20 Oct 2019 10:23 UTC)
Re: Keywords reduced Shiro Kawai (20 Oct 2019 10:42 UTC)
Re: Keywords reduced Marc Nieper-Wißkirchen (20 Oct 2019 21:10 UTC)
Re: Keywords reduced Shiro Kawai (20 Oct 2019 21:19 UTC)
Re: Keywords reduced Marc Nieper-Wißkirchen (20 Oct 2019 21:33 UTC)
Re: Keywords reduced Shiro Kawai (20 Oct 2019 22:05 UTC)
Re: Keywords reduced Marc Nieper-Wißkirchen (21 Oct 2019 07:01 UTC)
Re: Keywords reduced Shiro Kawai (20 Oct 2019 22:18 UTC)
Re: Keywords reduced Marc Nieper-Wißkirchen (21 Oct 2019 07:06 UTC)
Re: Keywords reduced Shiro Kawai (21 Oct 2019 07:25 UTC)
Re: Keywords reduced Marc Nieper-Wißkirchen (20 Oct 2019 21:04 UTC)
Re: Keywords reduced Shiro Kawai (20 Oct 2019 21:41 UTC)
Re: Keywords reduced Marc Nieper-Wißkirchen (21 Oct 2019 06:50 UTC)
Re: Keywords reduced Shiro Kawai (21 Oct 2019 07:53 UTC)
Re: Keywords reduced Marc Nieper-Wißkirchen (21 Oct 2019 11:47 UTC)
Re: Keywords reduced Peter Kourzanov (21 Oct 2019 15:42 UTC)
Re: Keywords reduced Marc Nieper-Wißkirchen (21 Oct 2019 15:55 UTC)
Re: Keywords reduced Shiro Kawai (21 Oct 2019 17:38 UTC)
Re: Keywords reduced John Cowan (21 Oct 2019 17:45 UTC)
Re: Keywords reduced Lassi Kortela (22 Oct 2019 08:21 UTC)
Keywords vs paremeters for hygiene Lassi Kortela (21 Oct 2019 08:05 UTC)
Re: Keywords vs paremeters for hygiene Marc Nieper-Wißkirchen (21 Oct 2019 11:23 UTC)
Re: Keywords reduced John Cowan (19 Oct 2019 19:04 UTC)
Re: Keywords reduced Marc Nieper-Wißkirchen (20 Oct 2019 09:15 UTC)
Re: Keywords reduced John Cowan (21 Oct 2019 17:26 UTC)
Re: Keywords reduced Marc Nieper-Wißkirchen (21 Oct 2019 18:38 UTC)
Re: Keywords reduced Shiro Kawai (21 Oct 2019 19:27 UTC)
Re: Keywords reduced Marc Nieper-Wißkirchen (22 Oct 2019 06:04 UTC)
Re: Keywords reduced Shiro Kawai (22 Oct 2019 10:07 UTC)
Re: Keywords reduced John Cowan (22 Oct 2019 19:33 UTC)
Re: Keywords reduced John Cowan (22 Oct 2019 19:39 UTC)
Re: Keywords reduced Lassi Kortela (22 Oct 2019 20:06 UTC)
Syntactic keywords vs parentheses Lassi Kortela (22 Oct 2019 20:30 UTC)
Re: Syntactic keywords vs parentheses John Cowan (22 Oct 2019 20:54 UTC)
Re: Syntactic keywords vs parentheses Lassi Kortela (22 Oct 2019 21:08 UTC)
Re: Syntactic keywords vs parentheses Shiro Kawai (22 Oct 2019 22:24 UTC)
Re: Syntactic keywords vs parentheses Lassi Kortela (23 Oct 2019 07:40 UTC)
Re: Syntactic keywords vs parentheses John Cowan (22 Oct 2019 23:12 UTC)
Re: Syntactic keywords vs parentheses Amirouche Boubekki (25 Oct 2019 11:56 UTC)
Re: Keywords reduced Marc Nieper-Wißkirchen (23 Oct 2019 07:19 UTC)
Re: Keywords reduced John Cowan (21 Oct 2019 23:06 UTC)
Re: Keywords reduced Shiro Kawai (22 Oct 2019 00:42 UTC)
Re: Keywords reduced Marc Nieper-Wißkirchen (22 Oct 2019 06:12 UTC)
Re: Keywords reduced Lassi Kortela (22 Oct 2019 10:56 UTC)
Re: Keywords reduced Lassi Kortela (20 Oct 2019 09:42 UTC)
Remaining keyword problems Lassi Kortela (29 Oct 2019 17:59 UTC)
allow-other-keys Lassi Kortela (29 Oct 2019 18:29 UTC)
Re: allow-other-keys John Cowan (29 Oct 2019 18:55 UTC)
Re: allow-other-keys Shiro Kawai (29 Oct 2019 19:18 UTC)
Re: allow-other-keys Lassi Kortela (29 Oct 2019 23:04 UTC)
Re: allow-other-keys Marc Feeley (29 Oct 2019 21:05 UTC)
Re: allow-other-keys Marc Nieper-Wißkirchen (03 Nov 2019 08:16 UTC)
Re: allow-other-keys Lassi Kortela (03 Nov 2019 10:11 UTC)
Re: allow-other-keys Marc Nieper-Wißkirchen (03 Nov 2019 10:34 UTC)
Re: allow-other-keys Lassi Kortela (03 Nov 2019 10:54 UTC)
Re: allow-other-keys Marc Nieper-Wißkirchen (03 Nov 2019 11:13 UTC)
Re: allow-other-keys Lassi Kortela (03 Nov 2019 11:39 UTC)
Re: allow-other-keys Arthur A. Gleckler (03 Nov 2019 18:39 UTC)
Re: allow-other-keys Marc Nieper-Wißkirchen (03 Nov 2019 18:48 UTC)
Re: allow-other-keys John Cowan (03 Nov 2019 19:20 UTC)
Re: allow-other-keys John Cowan (03 Nov 2019 19:18 UTC)
Re: allow-other-keys Marc Nieper-Wißkirchen (03 Nov 2019 19:52 UTC)
Re: allow-other-keys John Cowan (03 Nov 2019 22:19 UTC)
Identifier syntax and the range of Schemes to support Lassi Kortela (03 Nov 2019 19:54 UTC)
Re: Remaining keyword problems John Cowan (29 Oct 2019 19:51 UTC)
Re: Remaining keyword problems Lassi Kortela (29 Oct 2019 21:09 UTC)
Alternative syntax using colon symbols for portable keywords Lassi Kortela (29 Oct 2019 22:29 UTC)
Re: Remaining keyword problems Marc Nieper-Wißkirchen (11 Nov 2019 14:56 UTC)
Re: Remaining keyword problems Lassi Kortela (11 Nov 2019 16:15 UTC)
Re: Remaining keyword problems Marc Nieper-Wißkirchen (11 Nov 2019 14:44 UTC)
Re: Remaining keyword problems John Cowan (11 Nov 2019 16:48 UTC)
Re: Remaining keyword problems Marc Nieper-Wißkirchen (11 Nov 2019 17:06 UTC)
Re: Remaining keyword problems John Cowan (11 Nov 2019 17:15 UTC)

Re: Remaining keyword problems Marc Nieper-Wißkirchen 11 Nov 2019 14:56 UTC

Am Di., 29. Okt. 2019 um 22:10 Uhr schrieb Lassi Kortela <xxxxxx@lassi.io>:
>
> > - Keywords being global symbols vs hygienic identifiers.

After having thought about it again, I think there is a way out:

We write keywords in the form "foo" or "foo:" (assuming that the
latter is the datum representation of a native keyword). The
implementation of SRFI-177 uses `syntax-rules' to match the keywords,
that is native keywords like "foo:" are matched with "equal?" and
identifiers are matched via "free-identifier=?", that is hygienically.

What does it mean from a practical point of view?

If a consumer of SRFI 177 needs hygienic keywords, no problem.

For all others (probably the majority), just use keywords of the form
"foo:". For Scheme systems supporting SRFI 88, they will be read as
keywords and just matched via "equal?". For Scheme systems, reading
things like "foo:" as identifiers, the matching will be through
"free-identifier=?", which, however, is the same as "equal?" if "foo:"
is not bound! (Which it usually is.)

I think this situation is perfect in the light of that R7RS-large may
include native keywords later. Use the syntax "foo:" already now and
just make a note that identifiers of the form "foo:" mustn't be bound
(which they cannot in systems supporting SRFI 88 anyway).

Marc

> >
> > I will believe in the need for hygienic keywords when someone demonstrates
> > a non-hypothetical use for them.
>
> The idea seems technically sound, but I'm also a bit skeptical that
> well-working social conventions can be established among library writers
> who do not communicate with each other.
>
> Languages like Python, Ruby and Java are better than Scheme at
> programming-in-the-large because as systems grow larger, social factors
> start to dominate technical ones. The typical Lisper doesn't like to
> admit it. I don't like to admit it. But it's true.
>
> As we get out of core abstractions like closures and continuations, and
> towards complexity-management tools like module systems, keyword
> arguments, package management, documentation and tooling, I think we
> should shift focus from mathematical purity to whatever supports
> efficient social customs.
>
> That being said, I don't want to block 177 from interoperating with any
> hygienic keyword system. Fortunately it doesn't have to.
>
> >> - 177 needs to use RnRS-portable read syntax, so we can't use keyword
> >> objects. That means we need to use either symbols or strings to indicate
> >> keyword arguments. Symbols would be the natural way to indicate hygienic
> >> keywords, so it'd be nice to use something else for global keywords.
> >
> > I propose this: if you really must have hygienic keywords, then in systems
> > without keywords, a symbol beginning with ":" is treated as global.
>
> Hmm. Could this be the best of all worlds?
>
> (keyword-call 1 2 3 :foo 4 :bar 5 :baz 6)
>
> This forbids a syntax-rules based implementation. But anyway, the macro
> would scan the list until it finds either:
>
> - A keyword object (in a Scheme that has such objects).
> - A symbol whose name starts with `:`.
> - A symbol whose name ends with `:`.
>
>  From that point on, it would parse keyword-value pairs.
>
> The natural complement for that keyword-call syntax would be John's
> proposed (keyword-lambda (a b c &key foo bar baz) ...).
>
> Opinions?
>
> > If Marc's Chibi library can be made to cover Chicken, Gauche, and MIT
> > (which will need patches for each one), I'd say that making syntax-case a
> > standard is feasible.
>
> Sounds great. I'm not qualified to judge syntax-case vs ER.
>
> > I don't understand that. If a portable R7RS-large library wants to expose
> > procedures that have keywords (and I'd like that), then it has to use
> > either SRFI 177 conventions or some other conventions.
>
> I mean the library writer and the library user can use different keyword
> systems as long as those systems are compatible. For example I've called
> Gambit's native procedures that take keyword arguments using SRFI 177
> keyword-call; it worked fine.
>
> This also implies that either the user or the library writer can switch
> to a different keyword implementation at any time, independently of each
> other, as long as those implementations are compatible.
>
> 177 is lowest-common-denominator so that it's compatible with anything
> else, and so that it can be replaced with anything else. If it's not as
> compatible it will fail; you just inadvertently presented a better
> explanation of such failure than I did :)
>
> > +1.  I have carefully avoided the need for them in R7RS-large so far, but
> > SRFIs and pre-SRFIs are now starting to appear that simply have too many
> > options to be handled as standard Scheme arguments.
>
> That's generally a good indication that a solution is called for.
>
> Another good case: go to the Common Lisp spec and imagine what some of
> the built-in procedures would look like if you take out the keyword
> arguments.

--
Prof. Dr. Marc Nieper-Wißkirchen

Universität Augsburg
Institut für Mathematik
Universitätsstraße 14
86159 Augsburg

Tel: 0821/598-2146
Fax: 0821/598-2090

E-Mail: xxxxxx@math.uni-augsburg.de
Web: www.math.uni-augsburg.de/alg/mitarbeiter/mnieper/