diff options
| author | Matthias Andreas Benkard <code@mail.matthias.benkard.de> | 2013-07-11 16:27:06 +0200 | 
|---|---|---|
| committer | Matthias Andreas Benkard <code@mail.matthias.benkard.de> | 2013-07-11 16:27:06 +0200 | 
| commit | 6b446b2903a074992a9ddce1395146c58f8a3065 (patch) | |
| tree | e5db74c2548f05aecca4f246582294f5e304395a | |
| parent | 0b500b929a38d0bd911f1ce211c1b41f0a967743 (diff) | |
CATCH: Evaluate the tag form.
| -rw-r--r-- | sb-eval2.lisp | 7 | 
1 files changed, 4 insertions, 3 deletions
| diff --git a/sb-eval2.lisp b/sb-eval2.lisp index 3290de8..7da5447 100644 --- a/sb-eval2.lisp +++ b/sb-eval2.lisp @@ -199,10 +199,11 @@                          finally (return result))))))             ((catch)              (destructuring-bind (tag &body body) (rest form) -              (let ((k (prepare-progn body context))) +              (let ((tag* (prepare-form tag context)) +                    (body* (prepare-progn body context)))                  (lambda (env) -                  (catch tag -                    (funcall k env)))))) +                  (catch (funcall tag* env) +                    (funcall body* env))))))             ((block)              (destructuring-bind (name &body body) (rest form)                (let* ((tag (gensym (concatenate 'string "BLOCK-" (symbol-name name)))) | 
