Eduardo Cavazos wrote:
Here's a basic curry macro:
(define-syntax curry
(syntax-rules ()
((curry (f x)) f)
((curry (f x y ...))
(lambda (x)
(curry ((lambda (y ...)
(f x y ...))
y ...))) )))
Here's uncurry:
(define-syntax uncurry
(syntax-rules ()
( (uncurry (f x)) f )
( (uncurry (f x y ...))
(lambda (x y ...)
((uncurry ((f x) y ...)) y ...)) )))
> (import (dharmalab misc curry))
> (define vset! (curry (vector-set! a b c)))
> (define vec '#(10 20 30))
> ((uncurry (vset! a b c)) vec 1 'b)
> vec
#(10 b 30)
>
Ed