坏参数类型 - +

时间:2014-11-23 01:07:25

标签: lisp

当我尝试运行以下代码时,我收到此错误消息

(defun sa (L) 
  (cond
  ((equal '+ (car L)) (soma (nth 0 L) (nth 2 L)))
  (T (sa (cdr L)))
))

此代码的目标是将两个数字相加(我正在使用的列表中的位置0和2)。 L是使用

定义的列表
(setq a (list 1 '+ 2))
;also the soma function
(soma (a b) (+ a b))

我知道这应该创建列表(1 + 2)。我知道问题是L在第一次传递后回来的方式因为等于没有返回true但我不知道如何解决它。有什么想法吗?

1 个答案:

答案 0 :(得分:4)

您正在访问错误的元素进行比较,请尝试以下方法:

(equal '+ (car (cdr L)))