I’ll leave this as a community wiki – others people please feel free to add items or commentary in a reasonably concise manner.
- Fast arrays capable of handling millions of items: Repa, Vector.
- Fast and powerful maps: containers and unordered-containers.
- Fast, generic and convenient trees:
- Queues, hashtables: See the hashtables package for the latest and greatest.
- Regular expressions: regex-pcre, regex-tdfa
- Finite state machines: fsmActions – but it has version 0.4.3 alpha; fst – but not exactly a FSM. In some cases FRP will be useful instead of true FSM.
- Neural networks, genetic algorithms: HNN is well established. As far as GA, we really have a framework (GA) and something that looks more complete (hgalib), but I haven’t inspected it closely.
- Mathematical calculations: hmatrix
- Physics: dimensional.
- GUI: GTK works well. I get the sense that wxhaskell generates more questions per-capita, but that’s an informal impression.
- Image processing: Parsing? Juicy-Pixels and JuicyPixels-Repa.
- No, Image processing! The CV, Friday, yarr
- Working with databases: Consider using the
persistent-*wrappers, but also look at HDBC. PostgreSQL is stable. For Cassandra there are several but consider cql. - Functional reactive programming: Reactive-banana, netwire
- OpenGL bindings: OpenGL, GL.
- Parsing: Parsec, attoparsec, polyparse, frisby.
- Multithread and parallel programming – See the parallel package and Control.Concurrency. monad-par is relatively new but frequently easier to reason about than the basic parallel library. See also async for concurrent IO.
- Network – Depends. Network with blaze-builder, cereal, or binary. Also consider network-{conduit, enumerator, pipes}. There are several client/server wrappers out there as well.
- Multipurpose game engines: For learning? gloss. Otherwise you probably need to roll your own but make use of OpenGL, GLUT, GTK, FRP, ogre bindings, SDL, and perhaps FunGEn if it’s back on track.
- Configuration management: configurator, config-ini.
- XML Process: HaXml, HXT, xml-conduit – good, stable and powerful libraries.
Tools:
- Testing – QuickCheck, LazySmallCheck, Test-Framework, hspec, HUnit
- Logging – Yep, hslogger or dlist with the writer monad if that’s all you need.
- Profiling – hpc, thread scope, criterion, GHC time and space profiling utilities.
- Debugging – GHCi debugging, unsafe (trace) debugging, making better property tests.
Related Questions:
- Haskell library for 2D drawing
- Filling the enclosed areas with random colors – Haskell – Friday