http://learnlispthehardway.org/try-lisp/JSCL - 爲什麼這個神祕的錯誤?
CL-USER> (defun saynextof (a b c)(write a))
SAYNEXTOF
CL-USER> (saynextof "fred" "jim" "shiela")
ERROR[!]: too few arguments
(對於這種形式的驗證的益處:這並不完整地描述該問題。)(從standard不同)
http://learnlispthehardway.org/try-lisp/JSCL - 爲什麼這個神祕的錯誤?
CL-USER> (defun saynextof (a b c)(write a))
SAYNEXTOF
CL-USER> (saynextof "fred" "jim" "shiela")
ERROR[!]: too few arguments
(對於這種形式的驗證的益處:這並不完整地描述該問題。)(從standard不同)
JSCL需要在write
功能多於一個的參數,所以這是錯誤的原因。如果使用print
,則不會顯示錯誤。
看來,錯誤是由write
函數拋出:
CL-USER> (write "foo")
ERROR[!]: too few arguments
CL-USER>
我剛剛從GitHub下載最新版本的JSCL和編譯它。使用該版本,錯誤不會發生。對於JSCL的print.lisp
提交信息表明,曾經有在write
執行情況的問題,可能導致「太少參數」錯誤:
Author: David Vazquez <[email protected]>
Date: Mon Jan 4 19:23:28 2016 +0100
Fix the write function
It was using write-aux with too few arguments.
感謝。 「如果您使用打印代替,則不會出現錯誤。」不幸的是引用呢! :-) – ChrisJJ
然後你可以使用'(format t「A〜%」)''。 – Renzo
謝謝。 '(格式t「A〜%」a)'不起作用(打印A),但'(格式t「〜A」a)'不起作用。 – ChrisJJ