JSCL - 为什么这个神秘的错误?

时间:2016-07-27 10:58:18

标签: lisp common-lisp jscl

http://learnlispthehardway.org/try-lisp/

CL-USER> (defun saynextof ( a b c )(write a)) 
SAYNEXTOF
CL-USER> (saynextof "fred" "jim" "shiela")
ERROR[!]: too few arguments

(为了表格验证的好处:这完全描述了问题。)

2 个答案:

答案 0 :(得分:3)

JSCL要求(与standard不同)write函数中的多个参数,因此这就是错误的原因。

如果您使用print,则不会显示错误。

答案 1 :(得分:3)

似乎write函数抛出了错误:

CL-USER> (write "foo")
ERROR[!]: too few arguments
CL-USER> 

我刚刚从GitHub下载了最新版本的JSCL并进行了编译。使用该版本,不会发生错误。 JSCL' print.lisp的提交消息表明,write的实现过去常常会出现问题,这可能导致参数太少而且#34;错误:

Author: David Vazquez <davazp@gmail.com>
Date:   Mon Jan 4 19:23:28 2016 +0100

    Fix the write function

    It was using write-aux with too few arguments.