lazy-evaluation
Lazy evaluation is used in Haskell for:
- improving composability and reuse of code, i.e. more declarative code where the order of execution is not strict, but on-demand (i.e.feature/declarative-code )
- produce data structures in a stream way, when chunk are expanded (i.e.feature/stream )