We have looked at the basics of Haskell data types, functions, higher order functions, and other abstractions such as type classes. We have also looked at important type classes and concepts such as Functors, Applicatives, and monads.
In this chapter, we will look at common container data types and will work with them. We will visit strings again in this chapter, but with the intention of working in an efficient way. The text and bytestring packages provide us with an opportunity to work with efficient string types. Furthermore, the containers being a collection such as list also provides a way to fold and traverse in a similar way. We will look at two type classes, Traversable and Foldable, which give a unified way of folding and traversing over a data type.
A set is an ordered collection of unique items. If we insert an item which is already present in the set,...