[plt-scheme] What is the big deal about the currying of functions?
On May 24, 2007, at 6:02 PM, Grant Rettke wrote:
> I hear folks talk about how great is a language when it lets you curry
> functions, and that Scheme can do it too if you use macros.
>
> In your minds what is, and what is the value of, function currying?
Auto-Currying (which is what you mean) is absolutely necessary in a
lazy functional language and useful because
(lambda (x) (lambda (y)
is really indistinguishable from
(lambda (x y) ...
In a by-value language with imperative effects, this is simply not
true (even in the pure form you have two allocation effects,
noticable with eq?). That's why the language makes the programmer
decide when to curry and when not to curry.
Then again, when you program in a functional style and subset of
something like Scheme, it would be nice to say things like
(map (+ 4) ...) meaning (map (lambda (x) (+ 4 x)) ...
(filter (< 4) ...) meaning (filter (lambda (x) (< 4 x)) ...
but both (+ 4) and (< 4) have already meaning and it is NOT the
above. So we suffer .. but it's not too bad. Otherwise you wouldn't
find Scheme programmers. -- Matthias