monad-par-0.3.5: A library for parallel programming based on a monad
Safe HaskellSafe-Inferred
LanguageHaskell98

Control.Monad.Par.Scheds.Direct

Description

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

Documentation

data Sched Source #

Constructors

Sched 

Fields

Instances

Instances details
MonadReader Sched Par Source # 
Instance details

Defined in Control.Monad.Par.Scheds.DirectInternal

Methods

ask :: Par Sched

local :: (Sched -> Sched) -> Par a -> Par a

reader :: (Sched -> a) -> Par a

data Par a Source #

Instances

Instances details
MonadFix Par Source # 
Instance details

Defined in Control.Monad.Par.Scheds.DirectInternal

Methods

mfix :: (a -> Par a) -> Par a

Applicative Par Source # 
Instance details

Defined in Control.Monad.Par.Scheds.DirectInternal

Methods

pure :: a -> Par a

(<*>) :: Par (a -> b) -> Par a -> Par b

liftA2 :: (a -> b -> c) -> Par a -> Par b -> Par c

(*>) :: Par a -> Par b -> Par b

(<*) :: Par a -> Par b -> Par a

Functor Par Source # 
Instance details

Defined in Control.Monad.Par.Scheds.DirectInternal

Methods

fmap :: (a -> b) -> Par a -> Par b

(<$) :: a -> Par b -> Par a

Monad Par Source # 
Instance details

Defined in Control.Monad.Par.Scheds.DirectInternal

Methods

(>>=) :: Par a -> (a -> Par b) -> Par b

(>>) :: Par a -> Par b -> Par b

return :: a -> Par a

MonadCont Par Source # 
Instance details

Defined in Control.Monad.Par.Scheds.DirectInternal

Methods

callCC :: ((a -> Par b) -> Par a) -> Par a

ParFuture IVar Par 
Instance details

Defined in Control.Monad.Par.Scheds.Direct

Methods

spawn :: NFData a => Par a -> Par (IVar a)

spawn_ :: Par a -> Par (IVar a)

get :: IVar a -> Par a

spawnP :: NFData a => a -> Par (IVar a)

ParIVar IVar Par 
Instance details

Defined in Control.Monad.Par.Scheds.Direct

Methods

fork :: Par () -> Par ()

new :: Par (IVar a)

put :: NFData a => IVar a -> a -> Par ()

put_ :: IVar a -> a -> Par ()

newFull :: NFData a => a -> Par (IVar a)

newFull_ :: a -> Par (IVar a)

ParUnsafe IVar Par 
Instance details

Defined in Control.Monad.Par.Scheds.Direct

Methods

unsafePeek :: IVar a -> Par (Maybe a)

unsafeTryPut :: IVar a -> a -> Par a

unsafeParIO :: IO a -> Par a

MonadReader Sched Par Source # 
Instance details

Defined in Control.Monad.Par.Scheds.DirectInternal

Methods

ask :: Par Sched

local :: (Sched -> Sched) -> Par a -> Par a

reader :: (Sched -> a) -> Par a

newtype IVar a Source #

Constructors

IVar (IORef (IVarContents a)) 

Instances

Instances details
ParFuture IVar Par Source # 
Instance details

Defined in Control.Monad.Par.Scheds.Direct

Methods

spawn :: NFData a => Par a -> Par (IVar a)

spawn_ :: Par a -> Par (IVar a)

get :: IVar a -> Par a

spawnP :: NFData a => a -> Par (IVar a)

ParIVar IVar Par Source # 
Instance details

Defined in Control.Monad.Par.Scheds.Direct

Methods

fork :: Par () -> Par ()

new :: Par (IVar a)

put :: NFData a => IVar a -> a -> Par ()

put_ :: IVar a -> a -> Par ()

newFull :: NFData a => a -> Par (IVar a)

newFull_ :: a -> Par (IVar a)

ParUnsafe IVar Par Source # 
Instance details

Defined in Control.Monad.Par.Scheds.Direct

Methods

unsafePeek :: IVar a -> Par (Maybe a)

unsafeTryPut :: IVar a -> a -> Par a

unsafeParIO :: IO a -> Par a

NFData (IVar a) Source # 
Instance details

Defined in Control.Monad.Par.Scheds.Direct

Methods

rnf :: IVar a -> ()

data IVarContents a Source #

Constructors

Full a 
Empty 
Blocked [a -> IO ()] 

runPar :: Par a -> a Source #

runParIO :: Par a -> IO a Source #

new :: Par (IVar a) Source #

Creates a new IVar

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.

fork :: Par () -> Par () Source #

newFull :: NFData a => a -> Par (IVar a) Source #

newFull_ :: a -> Par (IVar a) Source #

put :: NFData a => IVar a -> a -> Par () Source #

spawn :: NFData a => Par a -> Par (IVar a) Source #

spawn_ :: Par a -> Par (IVar a) Source #

spawnP :: NFData a => a -> Par (IVar a) Source #

spawn1_ :: (a -> Par b) -> a -> Par (IVar b) Source #

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 #

Constructors

FixParException 

Instances

Instances details
Exception FixParException Source # 
Instance details

Defined in Control.Monad.Par.Scheds.DirectInternal

Methods

toException :: FixParException -> SomeException

fromException :: SomeException -> Maybe FixParException

displayException :: FixParException -> String

Show FixParException Source # 
Instance details

Defined in Control.Monad.Par.Scheds.DirectInternal

Methods

showsPrec :: Int -> FixParException -> ShowS

show :: FixParException -> String

showList :: [FixParException] -> ShowS

Orphan instances

ParFuture IVar Par Source # 
Instance details

Methods

spawn :: NFData a => Par a -> Par (IVar a)

spawn_ :: Par a -> Par (IVar a)

get :: IVar a -> Par a

spawnP :: NFData a => a -> Par (IVar a)

ParIVar IVar Par Source # 
Instance details

Methods

fork :: Par () -> Par ()

new :: Par (IVar a)

put :: NFData a => IVar a -> a -> Par ()

put_ :: IVar a -> a -> Par ()

newFull :: NFData a => a -> Par (IVar a)

newFull_ :: a -> Par (IVar a)

ParUnsafe IVar Par Source # 
Instance details

Methods

unsafePeek :: IVar a -> Par (Maybe a)

unsafeTryPut :: IVar a -> a -> Par a

unsafeParIO :: IO a -> Par a