Consider different ways of evaluating a procedure call and its arguments. Essentials of Programming Languages says
All the parameter-passing mechanisms (natural parameter passing, call by value, call by reference) we have discussed so far are eager: they always find a value for each operand. We now turn to a very different form of parameter passing, called lazy evaluation.
What I understand about it is that:
In applicative order evaluation (eager evaluation), we distinguish between call by value, call by reference, call by sharing, etc.
In normal order evaluation (lazy evaluation, call by name), is there still similar distinction between call by value, call by reference, call by sharing, etc?