Levels of laziness
- Strictly lazy
- do not evaluate unless explicitly requested
- Mostly lazy
- try to obtain values without causing eager evaluation in other lazy objects
- Mostly eager
- obtain all "easy" items -- provably finite portion of list
- Strictly eager
- Obtain all items
- Fail if provably infinite
- Eat tons of memory if not provably infinite