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

Re: Implementing it as a procedure


> Stephan wrote:
> I just realised that, with a small modification,
> curry-which-isnt-curry can be written as an ordinary
> procedure instead of a macro.

Your observation is very nice!

The procedural implementation of curry-which-isnt-curry
may turn out quite useful for Scheme implementations that
do not fully support R5RS (by leaving out macros).

> The only problem is that ordinary procedures cannot
> handle improper lists.

Although the macro-free implementation comes at a certain
performance penalty (running through the arguments for
each and every invocation), it is certainly worth the
effort of changing the syntax of curry-which-isnt-curry.

I have put it on my list of changes for the next iteration
of the SRFI document. The syntax defined in the SRFI will

then become

(curry-which-isnt-curry <proc> <const-or-slot>* [ <...> ])

where curry-which-isnt-curry is shorthand for a symbol chosen from

curry, section, partial-apply, partial, partial-call, specialise

(in the order of appearance) and potentially other proposals for
the very name of the very thing. As a side effect, the new syntax
will make Felix happy because it gets rid of the improper list
notation that causes trouble on some existing Schemes.