% Restart STORE-VALUE
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.0
9.1.4.2. restart,
9.1.4.2.2. restartのインターフェイス,
invoke-restart,
store-value(関数),
ccase,
check-type,
ctypecase,
use-value(関数),
use-value(restart)