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

Reply via email to