Restarting - MIT/GNU Scheme 9.1
Description: MIT/GNU Scheme 9.1

Next: The Current REPL Environment, Previous: Interrupting, Up: REPL

#### 3.1.3 Restarting

Another way to exit a REPL is to use the `restart` procedure:

— procedure: restart [k]

> This procedure selects and invokes a restart method. The list of restart methods is different for each REPL and for each error; in the case of an error REPL, this list is printed when the REPL is started:

>               ;Unbound variable: foo
>               ;To continue, call RESTART with an option number:
>               ; (RESTART 3) => Specify a value to use instead of foo.
>               ; (RESTART 2) => Define foo to a given value.
>               ; (RESTART 1) => Return to read-eval-print level 1.

>               2 error>

> If the k argument is given, it must be a positive integer index into the list (in the example it must be between one and three inclusive). The integer k selects an item from the list and invokes it. If k is not given, `restart` prints the list and prompts for the integer index:

>               2 error> (restart)
>               ;Choose an option by number:
>               ;  3: Specify a value to use instead of foo.
>               ;  2: Define foo to a given value.
>               ;  1: Return to read-eval-print level 1.

>               Option number:

> The simplest restart methods just perform their actions. For example:

>               2 error> (restart 1)
>               ;Abort!

>               1 ]=>

> Other methods will prompt for more input before continuing:

>               2 error> (restart)
>               ;Choose an option by number:
>               ;  3: Specify a value to use instead of foo.
>               ;  2: Define foo to a given value.
>               ;  1: Return to read-eval-print level 1.

>               Option number: 3

>               Value to use instead of foo: '(a b)
>               ;Value: (a b)

>               1 ]=>