Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (defmacro defun-schonfinkel (name lambda-list &body body)
- (let ((sargs (gensym)) (sargs2 (gensym)))
- `(defun ,name (&rest ,sargs)
- (if (< (length ,sargs) ,(length lambda-list))
- (lambda (&rest ,sargs2)
- (apply #',name (append ,sargs ,sargs2)))
- (destructuring-bind ,lambda-list ,sargs ,@body)))))
- (defun-schonfinkel f (x y z) (+ x y z))
- (f 19 390 1) => 410
- (funcall (f 19) 12 2) => 33
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement