Re: Alternative formulations of keywords John Cowan 12 Apr 2006 04:32 UTC

Marc Feeley scripsit:

> How is foo going to determine which parameters were supplied?  Are
> you assuming that the compiler has some knowledge about foo so that
> it knows the complete set of named optional parameters and can pass
> the "unsupplied value" for the parameters that are not supplied?

Just so.

> In general this is impossible because the function to call may be
> computed, as in:

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 are familiar with Prolog, I'm suggesting something vaguely
analogous to the use of DCG clauses.

> For the second proposal you have to assume the general case where you
> are passing computed expressions, such as:
>
>    (foo 'bar foo: (f x) bar: (g x))
>
> which would have to be transformed into
>
>    (foo 'bar (list (cons 'foo: (f x)) (cons 'bar: (g x))))

Or equivalently to (foo 'bar `((foo: . ,(f x)) (bar: . ,(g x)))).

--
We pledge allegiance to the penguin             John Cowan
and to the intellectual property regime         xxxxxx@ccil.org
for which he stands, one world under            http://www.ccil.org/~cowan
Linux, with free music and open source
software for all.               --Julian Dibbell on Brazil, edited