This page is part of the web mail archives of SRFI 89 from before July 7th, 2015. The new archives for SRFI 89 are here. Eventually, the entire history will be moved there, including any new messages.
On 12-Apr-06, at 12:32 AM, John Cowan wrote:
I agree that my proposal #1 will not work when the function to be called is not known at compile time. However, I don't mind if it doesn't work in every case, since the equivalent form for which the keywords are a shorthand is always well-defined, if awkward.
If you try to formalize the cases in which it does work and the cases in which it doesn't you will realize that it is very hard to specify precisely. You have to assume a particular set of powerful analyzes that are performed by the compiler, and your semantics will depend on the existence of these analyzes. This places difficult constraints on the Scheme implementation.
For example can your proposed approach work in this case: (define (f g) (g foo: 11 bar: 22)) or in this case: (define (f #!key (x 11) (y 22)) (+ x y)) (define (g z) (f y: z)) (define (h) (set! f (lambda (#!key (y 33) (z 44)) (* y z)))) Marc