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?
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.
The Racket/Kawa model has the advantage that the call can use a
special protocol even if the callee is not known
John Cowan
http://vrici.lojban.org/~cowan xxxxxx@ccil.orgA few times, I did some exuberant stomping about, like a hippo auditioning
for Riverdance, though I stopped when I thought I heard something at
the far side of the room falling over in rhythm with my feet. --Joseph Zitt