diff options
author | Matthias Andreas Benkard <code@mail.matthias.benkard.de> | 2013-07-11 15:29:50 +0200 |
---|---|---|
committer | Matthias Andreas Benkard <code@mail.matthias.benkard.de> | 2013-07-11 15:29:50 +0200 |
commit | 2b1cd52fd85ebea924717a8d758288577970237a (patch) | |
tree | e670f6997d70d0685ee66201500b196cbe255af8 | |
parent | d638f4ca0259ac32f76c8295407666caec5df689 (diff) |
Fix LET*.
-rw-r--r-- | sb-eval2.lisp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/sb-eval2.lisp b/sb-eval2.lisp index 371a51b..763b3fc 100644 --- a/sb-eval2.lisp +++ b/sb-eval2.lisp @@ -32,9 +32,13 @@ (defun make-null-context () (%make-context :block-tags nil)) (defun make-context (parent-context) - (with-slots (block-tags) + (with-slots (block-tags go-tags symbol-macros macros lexicals) parent-context - (%make-context :block-tags block-tags))) + (%make-context :block-tags block-tags + :go-tags go-tags + :symbol-macros symbol-macros + :macros macros + :lexicals lexicals))) (defun context-add-block-tag (context block tag) (let ((new-context (make-context context))) (with-slots (block-tags) @@ -274,7 +278,7 @@ (more (prepare-let* rest-bindings new-context))) (lambda (env) (let ((new-env (make-environment env))) - (push `(,var . ,val) (environment-variables new-env)) + (push `(,var . ,(funcall val env)) (environment-variables new-env)) (funcall more new-env)))))))) (prepare-let* bindings context)))) ((locally) |