SICP Exercise 1.4

Question

Observe that our model of evaluation allows for combinations whose operators are compound expressions. Use this observation to describe the behavior of the following procedure:

(define (a-plus-abs-b a b)
  ((if (> b 0) + -) a b))

Answer

In Scheme, conditionals can be used not only for returning operands, but also operators, such as in this case + or -. In the case of this particular program, a subtraction will be performed if b is a negative number, and an addition if b is a positive number. The resulting expression will then be either (+ a b) or (- a b).