Ну, то есть, как должен работать (как показано) - не работает.
Эта штука должна быть такая:
(defmacro combine-results (&body forms)
(with-gensyms (result)
`(let ((,result t))
,@(loop for f in forms
collect `(report-result ,f ',f)
collect `(unless ,f (setf ,result nil)))
,result)))
Тогда, допустим, вот эта - такая (всего лишь):
(defmacro check (&body forms)
`(combine-results
,@forms))
Тогда работает, а я теперь буду целый вечер собой гордиться.