これは本当に頭が痛いです
次の単純な関数をファイルに記述しています。
(defun find-num (string)
(if (> (length string) 1)
(parse-integer (remove (coerce (get-first-letter string)
'character)
string))
;else
1))
最初の文字を削除した後、文字列「a23」から数値を解析します。最初の文字のみが文字で、残りは「数字」であると想定しました。
ファイルをロードし、関数を実行しようとすると、次 のようなエラーが表示されます。
しかし、同じ正確なコードをコマンドラインに直接コピーして貼り付けると、関数は正常に機能します。
これは何ですか ?一般的な Lisp エラー ? それとも、私が見ていないものがありますか?
;; Loading file C:\Users ... (hidden)
;; Loaded file C:\Users ... (hidden)
T
[2]> (find-num "a3")
*** - ENDP: A proper list must not end with "a3"
The following restarts are available:
ABORT :R1 Abort main loop
Break 1 [3]> :a
[4]> (defun find-num (string)
(if (> (length string) 1)
(coerce (get-first-letter string) 'character) string))
;else
1))
WARNING: DEFUN/DEFMACRO: redefining function FIND-NUM in top-level, was
defined in C:\Users\.... (hidden)
FIND-NUM
[5]> (find-num "a3")
3 ;
1