Safe Haskell | None |
---|---|
Language | Haskell98 |
A scheduler for the Par monad based on directly performing IO actions when Par methods are called (i.e. without using a lazy trace data structure).
Synopsis
- data Sched = Sched {}
- data Par a
- newtype IVar a = IVar (IORef (IVarContents a))
- data IVarContents a
- runPar :: Par a -> a
- runParIO :: Par a -> IO a
- new :: Par (IVar a)
- get :: IVar a -> Par a
- put_ :: IVar a -> a -> Par ()
- fork :: Par () -> Par ()
- newFull :: NFData a => a -> Par (IVar a)
- newFull_ :: a -> Par (IVar a)
- put :: NFData a => IVar a -> a -> Par ()
- spawn :: NFData a => Par a -> Par (IVar a)
- spawn_ :: Par a -> Par (IVar a)
- spawnP :: NFData a => a -> Par (IVar a)
- spawn1_ :: (a -> Par b) -> a -> Par (IVar b)
- fixPar :: (a -> Par a) -> Par a
- data FixParException = FixParException
Documentation
Instances
Monad Par Source # | |
Functor Par Source # | |
MonadFix Par Source # | |
Defined in Control.Monad.Par.Scheds.DirectInternal | |
Applicative Par Source # | |
MonadCont Par Source # | |
ParUnsafe IVar Par Source # | |
Defined in Control.Monad.Par.Scheds.Direct unsafePeek :: IVar a -> Par (Maybe a) # unsafeTryPut :: IVar a -> a -> Par a # unsafeParIO :: IO a -> Par a # | |
ParFuture IVar Par Source # | |
ParIVar IVar Par Source # | |
MonadReader Sched Par Source # | |
IVar (IORef (IVarContents a)) |
Instances
ParUnsafe IVar Par Source # | |
Defined in Control.Monad.Par.Scheds.Direct unsafePeek :: IVar a -> Par (Maybe a) # unsafeTryPut :: IVar a -> a -> Par a # unsafeParIO :: IO a -> Par a # | |
ParFuture IVar Par Source # | |
ParIVar IVar Par Source # | |
NFData (IVar a) Source # | |
Defined in Control.Monad.Par.Scheds.Direct |
get :: IVar a -> Par a Source #
Read the value in an IVar
. The get
operation can only return when the
value has been written by a prior or parallel put
to the same
IVar
.
put_ :: IVar a -> a -> Par () Source #
put_
is a version of put
that is head-strict rather than fully-strict.
In this scheduler, puts immediately execute woken work in the current thread.
fixPar :: (a -> Par a) -> Par a Source #
Take the monadic fixpoint of a Par
computation. This is
the definition of mfix
for Par
. Throws FixParException
if the result is demanded strictly within the computation.
data FixParException Source #
Instances
Show FixParException Source # | |
Defined in Control.Monad.Par.Scheds.DirectInternal showsPrec :: Int -> FixParException -> ShowS # show :: FixParException -> String # showList :: [FixParException] -> ShowS # | |
Exception FixParException Source # | |