evaluated before each evaluation of the body Forms. When the Test is true,
the Exit-Forms are evaluated as a PROGN, with the result being the value
of the DO. A block named NIL is established around the entire expansion,
- allowing RETURN to be used as an laternate exit mechanism."
+ allowing RETURN to be used as an alternate exit mechanism."
(frob-do-body varlist endlist body 'let* 'setq 'do* nil))
;;; DOTIMES and DOLIST could be defined more concisely using
(unless (>= (length binding) 2)
(error "ill-formed restart binding: ~S" binding))
(destructuring-bind (name function
- &rest args
- &key report-function &allow-other-keys)
+ &key interactive-function
+ test-function
+ report-function)
binding
(unless (or name report-function)
(warn "Unnamed restart does not have a report function: ~
~S" binding))
- `(make-restart :name ',name :function ,function ,@args))))
+ `(make-restart ',name ,function
+ ,report-function
+ ,interactive-function
+ ,@(and test-function
+ `(,test-function))))))
`(let ((*restart-clusters*
(cons (list ,@(mapcar #'parse-binding bindings))
*restart-clusters*)))