Data.List can be abstracted using Foldable and Traversable but unfortunately I could not find the functions corresponding to head, take.
Those are, again, more general than you want. What is the `head` of a HashMap? (Consider that an implementation may choose to randomize the hash function to avoid hash collision attacks.) Foldable and Traversable express the concept of a collection which has no meaningful concept of an element's relative position within the collection. ListLike adds the concept of position, thereby admitting an indexing operation (and, by extension, `head` which is index 0).