#### 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.