i am new to lisp and in my code i want to convert 3 first bit to integer and check if number of ones in next bits is equal to that or not this is my code:
(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)) )) )))
but it has this error:
(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)))))
should be a lambda expression