Restart STORE-VALUE
かわりに使う値(基本的に使い続ける)
store-value restartは、 一般的にはcell-errorかtype-errorのような エラーの型から回復を試みるハンドラーによって使用されます。 回復は置き換えるデータの希望を指定して それに永久に置き換えることによって行います。
(defun type-error-auto-coerce (c)
(when (typep c 'type-error)
(let ((r (find-restart 'store-value c)))
(handler-case (let ((v (coerce (type-error-datum c)
(type-error-expected-type c))))
(invoke-restart r v))
(error ()))))) => TYPE-ERROR-AUTO-COERCE
(let ((x 3))
(handler-bind ((type-error #'type-error-auto-coerce))
(check-type x float)
x)) => 3.09.1.4.2. restart, 9.1.4.2.2. restartのインターフェイス, invoke-restart, store-value(関数), ccase, check-type, ctypecase, use-value(関数), use-value(restart)