; a simple interview question

(define (add1 x) (+ x 1))
(define (sub1 x) (- x 1))

(define (sum x y)
  (while (< x 0) (set! x (add1 x)) (set! y (sub1 y)))
  (while (< 0 x) (set! x (sub1 x)) (set! y (add1 y)))
  y)

(display (sum 3 5)) (newline)
(display (sum 3 -5)) (newline)
(display (sum -3 5)) (newline)
(display (sum -3 -5)) (newline)