A library for parallel programming based on a monad

Version on this page:
LTS Haskell 22.29:0.3.6@rev:1
Stackage Nightly 2024-07-13:0.3.6@rev:1
Latest on Hackage:0.3.6@rev:1

See all snapshots monad-par appears in

BSD-3-Clause licensed by Simon Marlow, Ryan Newton
Maintained by Simon Marlow, Ryan Newton
This version can be pinned in stack with:monad-par-,6453

Module documentation for

  • Control
    • Control.Monad
      • Control.Monad.Par
        • Control.Monad.Par.IO
        • Control.Monad.Par.Scheds
          • Control.Monad.Par.Scheds.Direct
          • Control.Monad.Par.Scheds.Sparks
          • Control.Monad.Par.Scheds.Trace
          • Control.Monad.Par.Scheds.TraceInternal

The Par monad offers a simple API for parallel programming. The library works for parallelising both pure and IO computations, although only the pure version is deterministic. The default implementation provides a work-stealing scheduler and supports forking tasks that are much lighter weight than IO-threads.

For complete documentation see Control.Monad.Par.

Some examples of use can be found in the examples/ directory of the source package.

Other related packages:

  • abstract-par provides the type classes that abstract over different implementations of the Par monad.

  • monad-par-extras provides extra combinators and monad transformers layered on top of the Par monad.

Changes in 0.3.4 relative to 0.3:

  • Fix bugs that cause "thread blocked indefinitely on MVar" crashes.

  • Added Control.Monad.Par.IO