Clojure unifies all kinds of collections under a single abstraction, the sequence. Clojure also provides a comprehensive library for working with data in the form of sequences. In combination, they provide a great deal of reuse across every Clojure application and library.
Clojure’s sequences are implemented using functional programming techniques: immutable data, recursive definition, and lazy realization. In the next chapter, you’ll see how to use these techniques directly, further expanding the power of Clojure.