diff --git a/binding.lisp b/binding.lisp index 0217db54d0cd9c66b1cdfbb115d23f4218e8cefc..681623c7c237ef02747ab3830c0be52f3c66a556 100644 --- a/binding.lisp +++ b/binding.lisp @@ -79,13 +79,15 @@ Execution of WHEN-LET* stops immediately if any INITIAL-FORM evaluates to NIL. If all INITIAL-FORMs evaluate to true, then BODY is executed as an implicit PROGN." (let ((binding-list (if (and (consp bindings) (symbolp (car bindings))) - (list bindings) - bindings))) + (list bindings) + bindings))) (labels ((bind (bindings body) (if bindings - `(let (,(car bindings)) - (when ,(caar bindings) - (bind (cdr bindings) body))) - `(progn ,@body)))) - (bind (cdr binding-list) body)))) + `((let (,(car bindings)) + (when ,(caar bindings) + ,@(bind (cdr bindings) body)))) + body))) + `(let (,(car binding-list)) + (when ,(caar binding-list) + ,@(bind (cdr binding-list) body))))))