$ cd ~

SICP Exercise 1.34

Out f procedure is defined as:

(define (f g)
  (g 2))

Trying to ask the interpreter to evaluate (f f):

> (f f)
. . application: not a procedure;
 expected a procedure that can be applied to arguments
  given: 2

The first time f is invoked, it will apply its argument (f) to 2. The second time it will try to apply its argument (2) to 2.

(f f)
(f 2)
(2 2)