X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Feval.lisp;h=8f0d970640cbb434e3dae6c69b4b5518460718cf;hb=230707c1899c1c008f7ce2ad97e2fd04849f7443;hp=8e67686f8fb0c07537472e47c82b8074a50ce76e;hpb=25d4ea4f108159b9782f21212374a1631cfe9a56;p=sbcl.git diff --git a/src/code/eval.lisp b/src/code/eval.lisp index 8e67686..8f0d970 100644 --- a/src/code/eval.lisp +++ b/src/code/eval.lisp @@ -225,6 +225,17 @@ (values sb!c:*lexenv* vars)) :eval)) (eval-locally `(locally ,@body) lexenv :vars vars)))) + ((if) + (destructuring-bind (test then &optional else) (rest exp) + (eval-in-lexenv (if (eval-in-lexenv test lexenv) + then + else) + lexenv))) + ((let let*) + (destructuring-bind (definitions &rest body) (rest exp) + (if (null definitions) + (eval-locally `(locally ,@body) lexenv) + (%eval exp lexenv)))) (t (if (and (symbolp name) (eq (info :function :kind name) :function))