3.14 Analysis: Laziness

In about 5 pages (approximately 325 80-character lines or 2,750 words), write a paper about lazy evaluation.

Provided you write intelligently and demonstrate your understanding of laziness, you can write about whatever you’d like. If that is too vague for you, or if you need some guidance, here are some suggestions:

- What does laziness give you? Are some kinds of programs or ideas easier to express with laziness?

- What does laziness cost? (Either you, the programmer, or the computer.) Are some kinds of programs particularly hard or ill-suited to lazy evaluation? How could you make laziness better for them?

- Is it necessary for laziness to be built-in to the language, such as Haskell or Lazy Racket? How could you use laziness in a "non-lazy" language, such as C?

- Discuss how laziness relates to modularity.

- How does, or should, mutation relate to laziness?

- Are there programs you have written in the past that would have been better had you understood laziness beforehand? Explain why, why not, how, etc.

- Have you used laziness before and did not realize it? Explain.

- Is laziness "better" or more "powerful" than strictness?

Refer to Language Analysis the First for details about including citations, history, code, etc in your writing in this class.