SICP Exercise 2.3