我有一个功能“power”,它给出了数字的平方,其他功能需要对列表中的每个数字求和。但它告诉我未定义的功能我和我真的无法使它工作。
(defun power (x)
(if (numberp x) (* x x) 0)
)
(defun sum (l)
(loop for i in l do(setq s(+ (power (i)) s)))
print s)
答案 0 :(得分:0)
示例:
CL-USER 12 > (loop for i in '(1 2 3 4) sum (power i))
30
CL-USER 11 > (reduce #'+ '(1 2 3 4) :key #'power)
30
CL-USER 14 > (defun sum (l &aux (sum 0))
(dolist (i l sum)
(incf sum (power i))))
SUM
CL-USER 15 > (sum '(1 2 3 4))
30
答案 1 :(得分:0)
它会给你这个错误,因为你把i
放在括号中(编译器看作函数调用)...(power (i))...
应该是...(power i)...
。至于打印只是忽略打印语句和
让函数返回s的值,如下所示。
(defun power (x)
(if (numberp x) (* x x) 0)
)
(defun sum (l)
(setq s 0)
(loop for i in l do
(setq s (+ (power i) s)))
s)