restart—a restart designator.
argument—an object.
results—the values returned by the function associated with restart, if that function returns.
Calls the function associated with restart, passing arguments to it. Restart must be valid in the current dynamic environment.
(defun add3 (x) (check-type x number) (+ x 3))
(foo 'seven)
▷ Error: The value SEVEN was not of type NUMBER.
▷ To continue, type :CONTINUE followed by an option number:
▷ 1: Specify a different value to use.
▷ 2: Return to Lisp Toplevel.
▷ Debug> (invoke-restart 'store-value 7)
→ 10
A non-local transfer of control might be done by the restart.
Existing restarts.
If restart is not valid, an error of type control-error
is signaled.
find-restart, restart-bind, restart-case, invoke-restart-interactively
The most common use for invoke-restart
is in a handler.
It might be used explicitly, or implicitly through invoke-restart-interactively
or a restart function.
Restart functions call invoke-restart
, not vice versa. That is,
invoke-restart provides primitive functionality, and restart functions
are non-essential “syntactic sugar.”