Am So., 26. Apr. 2020 um 00:02 Uhr schrieb John Cowan <xxxxxx@ccil.org>: [...] > If it can, well and good. But it can't always: (let ((bar (read)) (foo 10 bar 20)) is an obvious counterexample. Type analysis is one thing: dataflow analysis is quite another matter. Sure. But when I write such code, I won't expect the compiler to optimize away the keyword handling. :-) By the way, your example demonstrates nicely the difference between the Racket/Kawa model and the CL model (whether with special keyword objects or just symbols, which already work now): In the Racket/Kawa model procedure calls with keywords can already be handled at the syntactic level; on the other hand, this model makes it harder to handle keywords at runtime (think of APPLY or your example where the keyword is READ) and needs special procedures like Racket's keyword-apply. [...] Marc