SICP Practice

Practice 3.30

(define (ripple-carry-adder a b s c)
  (let ((count (length c)))
    (define (rip-rec a b s c)
      (if (or (null? a) (null? b) (null? c) (null? s))
          'done
          (begin (full-adder (car a) (car b) (car s) (car c))
                 (rip-rec (cdr a) (cdr b) (cdr s) (cdr c)))))
    (rip-rec a b s c)))