Previous: Finding and Invoking General Restart Code, Up: Restarts

16.4.4 The Named Restart Abstraction

A restart object is very simple, since it encapsulates only a name, effector, interactor, and description.

— procedure: restart? object

Returns #f if and only if object is not a restart.

— procedure: restart/name restart

Returns the name of restart. While the Scheme error system uses only symbols and the object #f for its predefined names, programs may use arbitrary objects (name equivalence is tested using eq?).

— procedure: restart/effector restart

Returns the effector encapsulated in restart. Normally this procedure is not used since invoke-restart and invoke-restart-interactively capture the most common invocation patterns.

— procedure: restart/interactor restart

Returns the interactor encapsulated in restart. This is either a procedure of no arguments or the object #f. Normally this procedure is not used since invoke-restart-interactively captures the most common usage. Thus restart/interactor is most useful as a predicate to determine if restart is intended to be invoked interactively.

— procedure: write-restart-report restart port

Writes a description of restart to port. This works by either displaying (if it is a string) or calling (if it is a procedure) the reporter that was supplied when the restart was created.