Haskell libraries overview and their quality [closed]

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

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)