Explain two popular evaluation strategies for functional programming languages: call-by-value evaluation and call-by-need (lazy) evaluation. Discuss their merits and demerits.
See [PAU96] for a detailed answer.