fedora-13 マシンに clisp をインストールしました。clisp インタープリターで、次のように入力しました。
(defun ask-num ()
(format t "Please enter a number.")
(let ((val (read)))
(if (numberp val)
val
(ask-num))))
以下は、Paul Graham の本の元のコードです。
(defun ask-number ()
(format t "Please enter a number. ")
(let ((val (read)))
(if (numberp val)
val
(ask-number))))
私が見逃したものはありますか?これは、コードのエラーというよりも、インタープリターの特異性のように思えます。ここにリンクがあります。問題のコードに対して ctrl-F が必要になる場合があります。
更新: ハハ、そうですね...問題です!
[9]> (defun ask-num ()
(format t "Please enter a number.")
(let ((val (read)))
(if (numberp val)
val
(ask-num))))
ASK-NUM
[10]> ask-num
*** - SYSTEM::READ-EVAL-PRINT: variable ASK-NUM has no value
The following restarts are available:
USE-VALUE :R1 Input a value to be used instead of ASK-NUM.
STORE-VALUE :R2 Input a new value for ASK-NUM.
ABORT :R3 Abort main loop