Since Hackage doesn't help you separate the good libraries from the bad, I wrote down a list of libraries I consider good. I hope this list can serve as a starting point for new Haskell programmers who are lost in the Hackage jungle. The list isn't exhaustive and I intend to flesh it out in the future.
I won't provide a separate motivation for each library in the list. The libraries I've listed have a sensible API, are well document, and well tested. In addition, by using these libraries your Haskell code is likely to perform well without you having to think too much about performance.
Haskell libraries you should use
bytestring: Defines the
ByteString type. Use bytestring when you need to represent binary data, such as network packets.
text: Defines the
Text type. Use the text package if you need to work with Unicode text data. The text package deals with lots of tricky internationalization issues for you, like how to lowercase/uppercase strings correctly in different languages. The package includes functions that decode/encode
Text values from and to
vector: Defines types for immutable and mutable vectors. Use this package whenever you'd use an array in another language. Since the built-in list type is so convenient to use, programmers sometimes use it when it's not appropriate, which makes their programs perform badly. Remember, the built-in list type is implemented as a linked list, which the associated memory bloat and cache issues.
aeson: Lets you work with JSON data easily and efficiently.
attoparsec: Good for parsing protocols that mix binary and ASCII data, like HTTP.