2015/11/25
SICP 問題 3.30
;; 最後のfull-adderのc-inは0.
;; (make-wire)の初期値は0と仮定してます.
(define (ripple-carry-adder Ak Bk Sk C)
(let ((c-in (make-wire)))
(cond ((null? (cdr Ak))
(full-adder (car Ak) (car Bk) 0 (car Sk) C)
'ok)
(else
(full-adder (car Ak) (car Bk) c-in (car Sk) C)
(ripple-carry-adder (cdr Ak) (cdr Bk) (make-wire) (cdr Sk) c-in)))))