[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Alternative formulations of keywords



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