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))))))
我是 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))))))