Lisp在函子位置的非法论证

时间:2014-04-25 15:56:34

标签: lisp lispworks

你好,有人可以帮帮我吗?

(defun f(x)
    (LIST ((* 2 x) (* 3 x)))
)

(f 1)

我明白了,Illegal argument in functor position: (* 2 X) in ((* 2 X) (* 3 X))

1 个答案:

答案 0 :(得分:4)

应该是:

(defun f (x)
    (list (* 2 x) (* 3 x)))

list的参数周围有一组额外的括号。当表达式是一个列表时,第一件事应该是要调用的函数,所以

((* 2 x) (* 3 x))

不是有效的表达式,因为(* 2 x)不是函数。