[plt-scheme] Currying functions?

From: Gregory Woodhouse (gregory.woodhouse at sbcglobal.net)
Date: Fri Feb 3 20:32:36 EST 2006

I was just browsing the language manual and came across an  
interesting function: procedure-arity. Now, it just happens that  
yesterday I had occasion to want to create a curried version of a  
binary operator (as part of the evaluator I'm working on, where I  
wanted to map it across an argument list), so I searched for curry  
and currying in Help Desk and found nothing. Well, in the case of  
functions of arity 2 it's easy:

 > (define (curry2 f)
     (lambda (x)
       (lambda (y)
         (f x y))))
 > (define a (curry2 +))
 > ((a 2) 3)
5

but to create a curried version of an arbitrary function, you need to  
know it's arity. Maybe it's possible to create a curried version of a  
function taking a variable number of arguments, but I'm not sure how  
it would be done.

===
Gregory Woodhouse
gregory.woodhouse at sbcglobal.net

"The universe is not required to be in
perfect harmony with human ambition."
--Carl Sagan




Posted on the users mailing list.