monad-par-0.3.4.7: A library for parallel programming based on a monad

Safe Haskell | None
Language | Haskell98

Control.Monad.Par.IO

Description

This module is an alternative version of Control.Monad.Par in which the `Par` type provides `IO` operations, by means of `liftIO`. The price paid is that only `runParIO` is available, not the pure `runPar`.

This module uses the same default scheduler as Control.Monad.Par.

Synopsis

- data ParIO a
- data IVar a
- runParIO :: ParIO a -> IO a

# Documentation

data ParIO a Source

A wrapper around an underlying Par type which allows IO.

Instances

Monad ParIO Source |
Functor ParIO Source |
Applicative ParIO Source |
MonadIO ParIO Source |
ParFuture IVar ParIO Source |
ParIVar IVar ParIO Source |

data IVar a Source

Instances

ParFuture IVar ParIO |
ParIVar IVar ParIO |
Eq (IVar a) Source | Equality for IVars is physical equality, as with other reference types.
NFData (IVar a) Source |

runParIO :: ParIO a -> IO a Source

A run method which allows actual IO to occur on top of the Par monad. Of course this means that all the normal problems of parallel IO computations are present, including nondeterminsm.

A simple example program:

     runParIO (liftIO $ putStrLn "hi" :: ParIO ())