Tomasz Nurkiewicz: Lazy sequences in Scala and Clojure
Lazy sequences (known as streams) are an interesting functional data structure... Basically lazy sequence is a list that is not fully known/computed until you actually use it. Imagine a list that is expensive to create and you don't want to compute too much, but still allow clients to consume as much as they want or need. Similar to iterator- however iterators are destructive - once you read them, they're gone. Lazy sequences on the other hand remember already computed elements...