For interactive handling, two pieces of information are needed from a restart: a report function and an interactive function.
The report function
is used by a program such as the debugger to
present a description of the action the restart will take.
The report function is specified and established by the
:report-function
keyword to
restart-bind or the
:report
keyword to restart-case.
The interactive function, which can be specified using the
:interactive-function
keyword to
restart-bind or :interactive
keyword
to restart-case, is used when the restart
is invoked
interactively, such as from the debugger, to produce a suitable
list of arguments.
invoke-restart invokes the most recently established restart whose name is the same as the first argument to invoke-restart. If a restart is invoked interactively by the debugger and does not transfer control but rather returns values, the precise action of the debugger on those values is implementation-defined.