(define (s (lambda (x) (cons x nil)))) (define (peano (lambda (n) (cond ((eq n 0) nil) (T (s (peano (sum n -1)))))))) (define (p car)) (define (add (lambda (x y) (cond ((equal x nil) y) (T (add (p x) (s y))))))) (define (mul (lambda (x y) (cond ((equal y (s nil)) x) (T (add x (mul x (p y)))))))) (define (fac (lambda (n) (cond ((equal n nil) (s nil)) (T (mul n (fac (p n)))))))) (define (seq (lambda (m n) (cond ((equal n m) (cons m nil)) (T (cons m (seq (s m) n))))))) (define (maplist (lambda (fn x) (cond ((atom x) x) (T (cons (fn (car x)) (maplist fn (cdr x)))))))) (define (count (lambda (x) (cond ((equal x nil) 0) (T (sum 1 (count (car x)))))))) (define (fac1 (lambda (x) (count (fac x))))) (maplist count (seq (peano 0) (peano 4))) (maplist fac1 (seq (peano 0) (peano 4)))