Generalized support for list-like structures in Haskell.
The ListLike module provides a common interface to the various Haskell
types that are list-like. Predefined interfaces include standard
Haskell lists, Arrays, ByteStrings, and lazy ByteStrings. Custom
types can easily be made ListLike instances as well.
ListLike also provides for String-like types, such as String and
ByteString, for types that support input and output, and for types that can handle
infinite lists.