on up back

Examples (Blackboard)

(absolute-value (+ x 3))

((lambda (a) (* a a)) (+ 2 3))

(define (simplify n)
  ;; Assuming 0 <= n <= 17 then 0 <= result < 9
  (if (>= n 9)
      (- n 9)
      n))

(define (cast-nines n)
  ;; If n is a non-negative integer, then 0 <= result < 9
  (if (< n 9)
      n
      (simplify (+ (remainder n 10)
                   (cast-nines (quotient n 10))))))

(define (test a b)
  (= (simplify (+ (cast-nines a)
                  (cast-nines b)))
     (cast-nines (+ a b))))