如何在lisp中将列表作为函数参数发送?

时间:2012-03-06 06:56:13

标签: list parameters lisp

所以我有一个错误:

EVAL: undefined function P1

到目前为止,我的代码如下。

(defun andexp (a b) (list 'and a b))
(defun orexp (a b) (list 'or a b))
(defun notexp (a) (list 'not a))

(defun evalexp (main-list bind-list)
;first change the bind-list to work with sublis
(setq new-bind-list (list (car bind-list).(cdr bind-list)))
;here will go the looping to check matching variable names
(sublis main-list new-bind-list)

);end of evalexp function

我在这里创建一个表达式:

(setq p1 (andexp 1 (orexp 'a 'b)))

对此进行评估:

(and 1 (or a b))

当我运行下面的代码时,我得到了上面提到的错误。

(evalexp ( p1 '( (a 0) (b 1))))

p1应该包含一个列表,所以我认为它会起作用。这导致了我的问题,我如何将列表作为参数发送到函数中?我做错了,还是别的什么?

1 个答案:

答案 0 :(得分:2)

注意错误的额外情况:

(evalexp ( p1 '( (a 0) (b 1))))

应该是

(evalexp p1 '((a 0) (b 1)))