diff options
author | Matthias Benkard <mulk@minimulk.mst-plus> | 2008-10-02 16:36:14 +0200 |
---|---|---|
committer | Matthias Benkard <mulk@minimulk.mst-plus> | 2008-10-02 16:36:14 +0200 |
commit | 2009d6d234c6bdc871109cf6b35c3ac2070f8d11 (patch) | |
tree | d4b1a557a58b2cafdc70d00782af48ead415c195 /control-flow.lisp | |
parent | 9fef4e8498255fb72f654514321ffc1e8ca382b6 (diff) |
Interpreter: Implement MULTIPLE-VALUE-LIST instead of MULTIPLE-VALUE-CALL.
Diffstat (limited to 'control-flow.lisp')
-rw-r--r-- | control-flow.lisp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/control-flow.lisp b/control-flow.lisp index bcd8e23..f429a1a 100644 --- a/control-flow.lisp +++ b/control-flow.lisp @@ -215,8 +215,12 @@ ,@body)) -(defmacro multiple-value-list (expression) - `(multiple-value-call #'list ,expression)) +(defmacro multiple-value-call (function-form &rest forms) + (let ((args `(mapcan 'identity (list ,@(mapcar (lambda (form) `(multiple-value-list ,form))))))) + `(apply ,function-form ,args))) + +;;(defmacro multiple-value-list (expression) +;; `(multiple-value-call #'list ,expression)) (defmacro multiple-value-bind ((&rest vars) expression &body forms) `(destructuring-bind ,vars (multiple-value-list ,expression) |