A Design Pattern that describes a function that allows you to generate a sequence of values that can be iterated through one at a time. Allows for memory efficient iterations of a list.`