Copied evaluator from Chapter 4.1
Exercise 4.25
Exercise 4.26
Lazy evaluator
Exercise 4.27
Exercise 4.29
Memoized thunks
Exercise 4.28
Exercise 4.30
Lazy lists
Exercise 4.33