### begriffs

Tikhon Jelvis gave this talk at Bayhac 2015. He describes how lazy evaluation supports deeper kinds of program modularity and suggests we embrace it for what it really is. [slides]

### Summary

• Stop thinking of Haskell like a strict language which happens to be lazy
• Laziness ia a new sort of modularity that we’re not used to from other languages
• It separates the definition of something from how it gets evaluated
• It lets us think of control flow the way we would think of data structures
• Deal with arbitrary precision (like vector graphics vs raster graphics)
• Shortcuts for free — take 5 \$ sort xs actually stops the sorting after five elements are found. No break statement needed inside the sort function.
• Another example: alpha beta pruning game trees. We can use a simple tree structure and just choose not to evaluate branches and that does pruning.
• In Haskell lists stand in for loops. Control flow can be manipulated as data.
• Lazy structures don’t necessarily need to fully exist in memory.
• Convenient nondeterministic programming
• variables can take many combinations of values from which we can later choose
• map coloring example
• Lazy data structures is like precision on demand
• it’s like the advantage of vector graphics over raster
• exact real arithmetic