#### 9.2.35 invoke-restart-interactively [Function]

`invoke-restart-interactively` restart ⇒ {result}*

#### Arguments and Values::

restart—a restart designator.

results—the values returned by the function associated with restart, if that function returns.

#### Description::

invoke-restart-interactively calls the function associated with restart, prompting for any necessary arguments. If restart is a name, it must be valid in the current dynamic environment.

invoke-restart-interactively prompts for arguments by executing the code provided in the `:interactive` keyword to restart-case or `:interactive-function` keyword to restart-bind.

If no such options have been supplied in the corresponding restart-bind or restart-case, then the consequences are undefined if the restart takes required arguments. If the arguments are optional, an argument list of nil is used.

Once the arguments have been determined, invoke-restart-interactively executes the following:

     (apply #'invoke-restart restart arguments)

#### Examples::

     (defun add3 (x) (check-type x number) (+ x 3))

     (add3 '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-interactively 'store-value)<<|
     |>  Type a form to evaluate and use: |>>7<<|
    ⇒  10

#### Side Effects::

If prompting for arguments is necesary, some typeout may occur (on query I/O).

A non-local transfer of control might be done by the restart.

#### Affected By::

*query-io*, active restarts

#### Exceptional Situations::

If restart is not valid, an error of type control-error is signaled.

#### See Also::

find-restart , invoke-restart , restart-case , restart-bind

#### Notes::

invoke-restart-interactively is used internally by the debugger and may also be useful in implementing other portable, interactive debugging tools.