diff options
-rw-r--r-- | sb-eval2.lisp | 13 |
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) |