summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sb-eval2.lisp13
1 files changed, 8 insertions, 5 deletions
diff --git a/sb-eval2.lisp b/sb-eval2.lisp
index 0d7033e..ad1a709 100644
--- a/sb-eval2.lisp
+++ b/sb-eval2.lisp
@@ -156,12 +156,15 @@
(finishp nil))
(loop until finishp
collect
- (let ((tag next-form)
- (forms (loop until (symbolp (setq next-form (pop forms)))
- collect next-form)))
+ (progn
(unless forms
- (setq finishp t))
- (cons tag forms)))))
+ (setq finishp (null forms)))
+ (let ((tag next-form)
+ (current-forms (loop for current-form = (pop forms)
+ do (setq next-form current-form)
+ until (symbolp current-form)
+ collect current-form)))
+ (cons tag current-forms))))))
(defun context-var-lexical-p (context var)
(context-find-lexical context var))
(defun context-add-env-lexicals (context vars)