Email list hosting service & mailing list manager

Reawakening keywords John Cowan (23 Apr 2020 21:16 UTC)
Re: Reawakening keywords Alex Shinn (23 Apr 2020 22:51 UTC)
Re: Reawakening keywords John Cowan (23 Apr 2020 23:35 UTC)
Re: Reawakening keywords Alex Shinn (24 Apr 2020 00:04 UTC)
Re: Reawakening keywords John Cowan (24 Apr 2020 00:45 UTC)
Re: Reawakening keywords (no sender) (24 Apr 2020 06:15 UTC)
Re: Reawakening keywords Lassi Kortela (24 Apr 2020 06:44 UTC)
Re: Reawakening keywords (no sender) (24 Apr 2020 06:46 UTC)
Re: Reawakening keywords Lassi Kortela (24 Apr 2020 06:52 UTC)
Re: Reawakening keywords (no sender) (24 Apr 2020 07:10 UTC)
Re: Reawakening keywords Lassi Kortela (24 Apr 2020 07:27 UTC)
Re: Reawakening keywords (no sender) (24 Apr 2020 07:43 UTC)
Re: Reawakening keywords Lassi Kortela (24 Apr 2020 08:00 UTC)
Re: Reawakening keywords (no sender) (24 Apr 2020 08:26 UTC)
Re: Reawakening keywords Lassi Kortela (24 Apr 2020 08:34 UTC)
Re: Reawakening keywords Amirouche Boubekki (24 Apr 2020 06:54 UTC)
Re: Reawakening keywords Lassi Kortela (24 Apr 2020 07:04 UTC)
Re: Reawakening keywords (no sender) (24 Apr 2020 07:13 UTC)
Re: Reawakening keywords Lassi Kortela (24 Apr 2020 07:36 UTC)
Re: Reawakening keywords Lassi Kortela (24 Apr 2020 06:39 UTC)
Re: Reawakening keywords Arthur A. Gleckler (24 Apr 2020 15:07 UTC)
Re: Reawakening keywords John Cowan (25 Apr 2020 00:07 UTC)
Re: Reawakening keywords Arthur A. Gleckler (25 Apr 2020 00:12 UTC)
Re: Reawakening keywords (no sender) (25 Apr 2020 07:51 UTC)
Re: Reawakening keywords John Cowan (25 Apr 2020 16:04 UTC)
Re: Reawakening keywords (no sender) (25 Apr 2020 16:40 UTC)
Re: Reawakening keywords John Cowan (25 Apr 2020 18:10 UTC)
Re: Reawakening keywords (no sender) (25 Apr 2020 18:25 UTC)
Re: Reawakening keywords John Cowan (25 Apr 2020 22:02 UTC)
Re: Reawakening keywords (no sender) (02 May 2020 19:33 UTC)
Re: Reawakening keywords (no sender) (24 Apr 2020 06:10 UTC)

Re: Reawakening keywords Marc Nieper-Wißkirchen 25 Apr 2020 18:25 UTC

Am Sa., 25. Apr. 2020 um 20:10 Uhr schrieb John Cowan <xxxxxx@ccil.org>:

[...]

>> Literal keywords would mean Racket/Kawa style, right?
>
>
> No, by a literal keyword I meant one that appears as a literal in the call; that is, (foo 10 :bar 20) as distinct from (foo 10 baz 20), where baz is a variable bound to :bar.  Anyway, it turns out that SBCL does not in fact do that optimization.  Racket does, and perhaps Kawa as well, and certainly a CL compiler could do so.

In Racket, `#:bar' is no expression and does not evaluate to
something, so this is as literal as it can get. In the other model,
`:bar' is an expression evaluating to a keyword object (named `:bar').
How far is the latter from replacing `:bar' by a variable `bar' that
evaluates to the keyword object named `:bar' under the assumption that
the compiler can infer the value of the variable?

[...]

> It's not enough for the callee to be known, though of course that is a requirement.  It is also necessary that the call has literal keywords in the sense given above.

Both `(foo 10 :bar 20)' (with `:bar' evaluating to a keyword object)
and `(foo 10 'bar 20)' seem to have the same complexity with respect
to optimzation. Any optimizer that does inlining, beta reduction, and
constant folding is, in principle, able to optimize both kinds of
calls.

The Racket/Kawa model has the advantage that the call can use a
special protocol even if the callee is not known.

[...]