Exercise 1.34. Suppose we define the procedure (define (f g) (g 2)) Then we have (f square) 4 (f (lambda (z) (* z (+ z 1)))) 6 What happens if we (perversely) ask the interpreter to evaluate the combination (f f)? Explain. ------------------------------------------------------------------------ (f f) evaluates to (f 2), which evaluates to (2 2), which is nonsense, as 2 is not a function. This is an error which a language with a type system would catch at compile time, as f is a function on functions on numbers, so calling f with f as an argument can only be an error.