這真的讓我頭痛非常奇怪的錯誤在普通的lisp
我有一個簡單的函數寫在一個文件中。
(defun find-num (string)
(if (> (length string) 1)
(parse-integer (remove (coerce (get-first-letter string)
'character)
string))
;else
1))
它能做什麼是解析從字符串「A23」數字去掉第一個字母后。 我認爲只有第一個字符是字母,其餘都是「數字」。
我加載文件,當我嘗試運行的功能,它給我的錯誤,他說: 一個適當的列表不能與「A3」結束...什麼???
但是,當我直接在命令行中複製並粘貼相同的確切代碼時,該函數按原樣工作。
這是什麼?常見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
我還發現其他一些函數的行爲也相似。 – jbchichoko
我將你的函數複製到一個文件中,用(aref字符串0)代替(get-first-letter字符串),加載文件並且它工作。 –
我和@RainerJoswig做的一樣,它也可以。 – juanitofatas