Я новичок в лиспе, и в моем коде я хочу преобразовать 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)))))
должно быть лямбда-выражением