Hello,
Below is a simple curry macro. Example:
(define subtract-from (curry - a b))
(define-syntax curry-helper
(syntax-rules ()
( (curry-helper (saved ...) procedure parameter rest ...)
(lambda (parameter)
(curry-helper (saved ... parameter) procedure rest ...)) )
( (curry-helper (saved ...) procedure)
(procedure saved ...) )))
(define-syntax curry
(syntax-rules ()
( (curry procedure parameter ...)
(curry-helper () procedure parameter ...) )))
I have a feeling the above can be simpler... Hi Alex! ;-)
What would be *really* cool is if it curried according to the sorted
order of the letters. So for example:
(curry - c b a)
would be:
(lambda (c)
(lambda (b)
(lambda (a)
(- a b c))))
Ed