我正在尝试实现计算平方和的Common Lisp函数。我有这样的:REPL中的错误:输入要使用的值而不是(FDEFINITION'X)
[1]> (defun sum-of-squares (x)
(reduce +
(mapcar
#'(lambda (x) (* x x))
(x)
)))
的REPL接受它毫无怨言,但是当我尝试使用它:
[2]> (sum-of-squares '(1 2 3))
我得到这个:
*** - EVAL: undefined function X
The following restarts are available:
USE-VALUE :R1 Input a value to be used instead of (FDEFINITION 'X).
RETRY :R2 Retry
STORE-VALUE :R3 Input a new value for (FDEFINITION 'X).
ABORT :R4 Abort main loop
我拿去x
在mapcar被解释为一个函数。我究竟做错了什么?
'(x)'表示调用函数'x'。如果你想引用'x'作为变量,就把它放在原来的位置。此外,您需要传递'#'+'而不是'+'来减少('+'是您没有的变量的名称,'#'+'是函数的名称+) – 2013-05-11 06:29:03
我建议阅读一本好的介绍性书籍。免费下载:http://www.cs.cmu.edu/~dst/LispBook/ – 2013-05-11 08:19:01