(defun succ (a) (cond ((null a) (quote (t))) ((car a) (cons (quote nil) (succ (cdr a)))) ((quote t) (cons (quote t) (cdr a))))) (defun prec (x) (cond ((null x) (quote nil)) ((car x) (cond ((null (cdr x)) (quote nil)) ((quote t) (cons (quote nil) (cdr x))))) ((quote t) (cons (quote t) (prec (cdr x)))))) (defun plus (a b) (cond ((null a) b) ((null b) a) ((and (car a) (car b)) (cons (quote nil) (plus/c (cdr a) (cdr b)))) ((quote t) (cons (or (car a) (car b)) (plus (cdr a) (cdr b)))))) (defun plus/c (a b) (cond ((null a) (succ b)) ((null b) (succ a)) ((or (car a) (car b)) (cons (and (car a) (car b)) (plus/c (cdr a) (cdr b)))) ((quote t) (cons (quote t) (plus (cdr a) (cdr b)))))) (defun or (a b) (cond (a (quote t)) ((quote t) b))) (defun fib (n) (cond ((null n) n) ((quote t) ((lambda (n1) (cond ((null n1) n) ((quote t) (plus (fib n1) (fib (prec n1)))))) (prec n))))) (fib (quote(nil nil t nil t))) ;20 ;; Expected: (T NIL T T NIL T T NIL NIL T NIL T T) ;; This takes about 37s here.