3

私は、Common Lisp エラー処理システムに関連して行ってきたいくつかの調査に対処するために、Peter Seibel Practical Common Lispによる優れた本を読んでいます。

本の説明を読み、ネットで情報を掘り下げようとしましたが、STORE-VALUEand USE-VALUErestarts の意味と使用法を理解できませんでした。誰かがこれらの機能の目的を説明できますか?

;;; Example of the STORE-VALUE and USE-VALUE restarts

(defun careful-symbol-value (symbol)
   (check-type symbol symbol)
   (restart-case (if (boundp symbol)
                     (return-from careful-symbol-value 
                                 (symbol-value symbol))
                     (error 'unbound-variable
                            :name symbol))
     (use-value (value)
       :report "Specify a value to use this time."
     value)
     (store-value (value)
       :report "Specify a value to store and use in the future."
       (setf (symbol-value symbol) value))))
4

2 に答える 2

0

おそらく非常に単純な説明:use-valueは、指定した値を1 回だけ使用し、次に同じ場所にヒットすると、再びエラーになります。store-value修正を求めるのは 1 回だけです。

状況を想像してみてください: 配列を繰り返し処理していて、どこかでインデックス変数を間違って入力しました。たとえば、 ではありませjiuse-value存在しない変数をヒットすると、ループの最後まで尋ね続けます。しかし、 を選択するとstore-value、与えられたものは何でも使用しようとし、それが機能した場合は、ループの最後まで黙って続行します。

于 2013-05-26T21:40:17.963 に答える