% Function INVOKE-RESTART
Function INVOKE-RESTART
invoke-restart restart &rest arguments => result*
restart - restart指定子
argument - オブジェクト
result - restartに関係づいた関数による返却値(もしあるなら)。
restartに関連づいた関数を引数argumentsとともに呼び出します。 restartは現在の動的環境下で有効なものでなければなりません。
(defun add3 (x) (check-type x number) (+ x 3))
(foo '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 'store-value 7)
=> 10
restartによって非局所的な遷移の制御が行われるかもしれません。
存在するrestart。
もしrestartが有効でないときは、
型control-errorのエラーが発生します。
find-restart,
restart-bind,
restart-case,
invoke-restart-interactively
もっとも一般的には、invoke-restartはハンドラーの中で使用されます。
それは明示的に使用されるかもしれませんし、
または暗黙的にinvoke-restart-interactivelyか
restart関数を通して使用されるかもしれません。
restart関数はinvoke-restartを呼び出しますし、
逆もまた成り立ちます。
これは、invoke-restartが原始的な機能を提供しており、
restasrt関数は本質ではない「糖衣構文」です。