lisp error : "should be a lambda expression"

lisp error : "should be a lambda expression"

我是 lisp 的新手,在我的代码中我想将 3 个第一位转换为整数并检查下一位中的个数是否等于那个 这是我的代码:

 (defun new (vi n res)(
(cond ( (= vi nil) ((cond ((= 0 res) t) )))
 (    (= 2 n) (new (cdr vi) 1 (* (car vi) 4)) ) 
      ((= 1 n) (new (cdr vi) 0 (+ (res) (* (car vi) 2)) ))  
      ((= 0 n) (new (cdr vi) -1 (+ (res) (car vi ))  ))
       ((= vi nil) (nil))
      ((= -1 n) (new (cdr vi) -1 (- res (car vi)) )) )))

但是它有这个错误: (COND ((= VI NIL) ((COND ((= 0 RES) T)))) ((= 2 N) (NEW (CDR VI) 1 (* (CAR VI) 4))) ((= 1 N) (NEW (CDR VI) 0 (+ (RES) (* (CAR VI) 2)))) ((= 0 N) (NEW (CDR VI) -1 (+ (RES) (CAR VI)))) ((= VI NIL) (NIL)) ((= -1 N) (NEW (CDR VI) -1 (- RES (CAR VI))))) 应该是 lambda 表达式

你为 cond 放置了额外的 (),这使得 lisp 认为它应该是可调用的,删除额外的 () 将解决问题。

 (defun new (vi n res)
    (cond ((= vi nil) (cond ((= 0 res) t) ))
          ((= 2 n) (new (cdr vi) 1 (* (car vi) 4))) 
          ((= 1 n) (new (cdr vi) 0 (+ (res) (* (car vi) 2))))  
          ((= 0 n) (new (cdr vi) -1 (+ (res) (car vi ))))
          ((= vi nil) (nil))
          ((= -1 n) (new (cdr vi) -1 (- res (car vi))))))