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 ﬁnd a value for each operand. We now turn to a very different form of parameter passing, called lazy evaluation.
What I understand 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), is there still similar distinction between call by value, call by reference, call by sharing, etc?