Executes a body of code if a series of forms evaluates to non-nil, propagating the results of the forms through the body of code.
when-let* bindings &body body => result
bindings ::= ((var form)*)
A variable whose value is used in the evaluation of body.
A form, which must evaluate to non-nil.
A body of code to be evaluated conditionally on the result of form.
The result of evaluating body using the value var.
when-let* expands into nested
The bindings are evaluated in turn as long as each returns non-nil. If the last binding evaluates to non-nil, body is executed. Within the code body, each variable var is bound to the result of the corresponding form form.
(defmacro divisible (n &rest divisors)
`(when-let* ,(loop for div in divisors
collect (list (gensym)
(zerop (mod n div))))
LispWorks User Guide and Reference Manual - 13 Feb 2015