This document introduces lazy lists, which are data structures that only calculate the needed parts of a list, unlike regular lists that calculate the entire list up front. It notes that Haskell supports lazy lists by default while Ruby can also support them. It describes different types of lazy lists, such as those with boundless, undefined, or defined lengths. It also discusses how to construct lazy lists and common operations like truncation, filtering, mapping, and folding.