29 lines
785 B
Common Lisp
29 lines
785 B
Common Lisp
(load "functions.lisp")
|
|
|
|
(define-macro dlambda (&rest methods)
|
|
(cons
|
|
(quote lambda)
|
|
(cons
|
|
(quote (&rest arguments))
|
|
(list
|
|
(cons
|
|
(quote case)
|
|
(cons
|
|
(quote (first arguments))
|
|
(mapcar
|
|
(lambda (method)
|
|
(cons
|
|
(first method)
|
|
(list
|
|
(cons
|
|
(quote apply)
|
|
(cons
|
|
(cons
|
|
(quote lambda)
|
|
(rest method))
|
|
(list
|
|
(if (equal t (car method))
|
|
(quote arguments)
|
|
(quote (rest arguments)))))))))
|
|
methods)))))))
|