3.17 Analysis: Laziness

The suggested length is 5 pages.

Write a paper about lazy evaluation.

You can write about whatever you want provided you demonstrate a solid understanding. Here are a few suggestions you might consider in starting this assignment, but please do not feel constrained by this list, as it is not comprehensive. Please feel free to contact me directly so we can discuss the direction you want to take with the paper.

- 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.