exercise 21
Merge github.com:grahaminn/SICP