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
Marc Nieper-Wißkirchen
(24 Apr 2020 06:15 UTC)
|
Re: Reawakening keywords
Lassi Kortela
(24 Apr 2020 06:44 UTC)
|
Re: Reawakening keywords
Marc Nieper-Wißkirchen
(24 Apr 2020 06:46 UTC)
|
Re: Reawakening keywords
Lassi Kortela
(24 Apr 2020 06:52 UTC)
|
Re: Reawakening keywords
Marc Nieper-Wißkirchen
(24 Apr 2020 07:10 UTC)
|
Re: Reawakening keywords
Lassi Kortela
(24 Apr 2020 07:27 UTC)
|
Re: Reawakening keywords
Marc Nieper-Wißkirchen
(24 Apr 2020 07:43 UTC)
|
Re: Reawakening keywords
Lassi Kortela
(24 Apr 2020 08:00 UTC)
|
Re: Reawakening keywords
Marc Nieper-Wißkirchen
(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
Marc Nieper-Wißkirchen
(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
Marc Nieper-Wißkirchen
(25 Apr 2020 07:51 UTC)
|
Re: Reawakening keywords
John Cowan
(25 Apr 2020 16:04 UTC)
|
Re: Reawakening keywords
Marc Nieper-Wißkirchen
(25 Apr 2020 16:40 UTC)
|
Re: Reawakening keywords
John Cowan
(25 Apr 2020 18:10 UTC)
|
Re: Reawakening keywords Marc Nieper-Wißkirchen (25 Apr 2020 18:25 UTC)
|
Re: Reawakening keywords
John Cowan
(25 Apr 2020 22:02 UTC)
|
Re: Reawakening keywords
Marc Nieper-Wißkirchen
(02 May 2020 19:33 UTC)
|
Re: Reawakening keywords
Marc Nieper-Wißkirchen
(24 Apr 2020 06:10 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. [...]