full-adder added by anonymous on Sat Feb 28 01:36:19 2015

(define (full-adder a b c)
  (let*-values (((half-adder) (lambda (a b)
                                (let* ((oc (and a b))
                                       (o (and (or a b)
                                               (not oc))))
                                  (values o oc))))
                ((o1 oc1) (half-adder a b))
                ((o oc2) (half-adder o1 c)))
    (values o (or oc1 oc2))))