44

I want to use Haskell in production. It has a lot of libraties but not all of them are stable, ready-to-use and well-developed. Some libraries with interesting conceptions have experimental status. Many libraries are still in minor versions (0.0.1 for example). Some of them just abandoned. Hackage too huge to monitor them, so I need a brief slice of the current libraries state, their prospects and suitability for use.

I understand that question is very broad, but this information will be useful to anyone in any way. Here we can gather information bit by bit and then use it for an informative paper.

So what libraries I can use for:

  • Fast arrays capable of handling millions of items
  • Fast and powerful maps (probably, Data.Map?)
  • Fast, generic and convenient trees
  • Queues, hashtables
  • Regular expressions
  • Finite state machines
  • Neural networks, genetic algorithms
  • Mathematical calculations
  • Physics (wich can be used in game developing)
  • GUI
  • Image processing (we have various image formats actually)
  • Working with databases (maybe ORM or some DSLs to generate SQL)
  • Functional reactive programming
  • OpenGL bindings (yes, HOpenGL is good), OpenAL and OpenCL bindings
  • Parsing (Parsec is great I think)
  • Multithread and parallel programming
  • Network
  • Multipurpose game engines
  • Something else?

What is also interesting to have the tools for:

  • Testing (QuickCheck)
  • Logging (Maybe hslogger)
  • Profiling
  • Debugging

Here the links to the similar topics:

Other links

Thank you.

Community
  • 1
  • 1
Alexander Granin
  • 963
  • 14
  • 20

1 Answers1

34

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:

Related Questions:

Community
  • 1
  • 1
Thomas M. DuBuisson
  • 64,245
  • 7
  • 109
  • 166
  • It seems, we have no finished and stable Finite State Machine libraries. What we have are [fst](http://hackage.haskell.org/package/fst) and [fsmActions](http://hackage.haskell.org/package/fsmActions). In some cases a FRP libraries should be used instead. – Alexander Granin Feb 24 '12 at 04:51
  • @GAS That sounds accurate to me. I've heard colleagues complain about exactly this issue. One even has his own FSM library for teaching purposes but, for reasons unknown to me (probably just priorities and time pressures), has yet to releasing the code. – Thomas M. DuBuisson Feb 24 '12 at 07:07