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

Reply via email to