[Haskell-cafe] ANN: Three package announcements

Mario Blažević mblazevic at stilo.com
Mon Mar 22 09:48:05 EDT 2010

There are three new packages on Hackage:
   - monad-parallel 0.5
   - monad-coroutine 0.5
   - Streaming Component Combinators 0.5

    The first two packages are completely new. Their functionality has
been present in SCC 0.4, but I thought they might be useful on their
own. I'm keeping all the version numbers in sync for now, and the source
code for all three packages is in a single Darcs repository at

    The monad-parallel library defines two Monad subclasses, 
MonadParallel and MonadFork, that enable monadic computations to be
executed in parallel and their results combined. The library also
exports a subset of the Control.Monad interface (ap, sequence, and
related functions), adjusted to exploit the parallelism. The only 
currently defined MonadParallel instances are IO, Maybe, [], and 
Identity. More  instances could be added, but I didn't want the package 
to depend on MTL or transformers. The library design was heavily 
influenced by the discussion in this Cafe thread:


    The monad-coroutine package exports a generic monad transformer
Coroutine: Functor s => MonadTrans (Coroutine s). A 
Coroutine-transformed monad can suspend at any point, returning its
resumption wrapped in the functor s. There are also some functions for
manipulating and running coroutines, as well as a couple of useful
suspension functors such as Yield and Await.

    Finally, version 0.5 of Streaming Component Combinators (a.k.a. SCC)
comes with some significant code refactoring (as the two aforementioned
packages prove), simplifications, and performance enhancements. No new
features have been added since the 0.4 release.

More information about the Haskell-Cafe mailing list