* (defcurry add (a b c d e) (+ a b c d e)) ADD * (add 1) # * (funcall (add 1) 2 3 4) # * (funcall (add 1) 2 3 4 5) 15 * (funcall (funcall (add 1) 2 3) 4 5) 15 * (macroexpand-1 '(defcurry add (a b c d e) (+ a b c d e))) (DEFUN ADD (&REST REST) (LET ((FUNC (LAMBDA (A B C D E) (+ A B C D E)))) (CURRY-N (- 5 (LENGTH REST)) (APPLY #'PARTIAL FUNC REST)))) T