Haskell is easy

To make it more true that Haskell is easy, here's a list of curated libraries. In the personality descriptions matching you to a library, be honest with yourself about where you're at and what your needs are.

This isn't listing for listing's sake. I've either used it or someone whose taste and experience I really trust has used it. If you list everything, the list is useless to somebody that can't sniff test the API quickly.

Disclaimer

My coauthor Julie and I wrote the book Haskell Programming from first principles. I mention where things in this list (which is very opinionated) are covered in the book. I don't care if you buy our book.

Getting Haskell installed

Use Stack!

Basic data structures

Benchmarking

Binary serialization/deserialization

Stuff that is somewhat opinionated about how your data looks over the wire

I wanna write my own!

Command-line argument parsing

Concurrency / synchronization

CSV

Bytes

Elasticsearch

File I/O

Text

Bytes

HTTP clients

I just got here and don't know what I'm doing

Know what I'm doing and I'd like more fine-grained control over resources, such as streaming

Please see the note on streaming before using any streaming libraries.

JSON

lenses

Logging

Network I/O

Network.Socket.Bytestring in the network library.

NLP

Parsing

Regular expressions

SQL

I'm new and just want to throw a query over the wire!

I'm not totally new to Haskell and willing to invest in something more type-safe!

Statistics

Streaming

Take the note on streaming under advisement. Don;t

Testing

Unit/spec testing

Property testing

Text / strings

Time

I need something faster than time or I use a lot of timestamps!

Utility libraries and conveniences

Web Frameworks

I just need to make a tiny API or I just started

I'm going to make a web application I have to maintain and I'm comfortable with a more opinionated framework

XML

Note on concurrency

For learning how to write parallel and concurrent programs in Haskell, Marlow's book is peerless.

Note on streaming

Pipes is generally easier to use than Conduit and can be quite pleasant. However, if you're new to Haskell you should avoid using streaming libraries unless necessary to control memory usage. Mostly because you'll spin your wheels on which operator to use and the type errors won't help much. YMMV.