(defmacro acond2 (&rest clauses)
(if (null clauses)
nil
(with-unique-names (val foundp)
(destructuring-bind ((test &rest progn) &rest others)
clauses
`(multiple-value-bind (,val ,foundp)
,test
(if (or ,val ,foundp)
(let ((it ,val))
(declare (ignorable it))
,@progn)
(acond2 ,@others)))))))Source Context