[1] This is precisely the issue with the unless procedure, as in exercise 4.35.
[2] This is the procedural functional representation described in exercise 2.4. Essentially any procedural functional representation (e.g., a message-passing implementation) would do as well. Notice that we can install these definitions in the lazy evaluator simply by typing them at the driver loop. If we had originally included cons, pair, car, head, and cdr tail as primitives in the global environment, they will be redefined. (Also see exercises 4.42 and 4.43.)
[3] This permits us to create delayed versions of more general kinds of list structures, not just sequences. Hughes 1990 discusses some applications of lazy trees.
4.2.3   Streams as Lazy Lists