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

Safe HaskellNone
LanguageHaskell98

Control.Monad.Par.Scheds.Direct

Contents

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
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
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

fail :: String -> 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

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

MonadCont Par Source # 
Instance details

Defined in Control.Monad.Par.Scheds.DirectInternal

Methods

callCC :: ((a -> Par b) -> Par 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

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

newtype IVar a Source #

Constructors

IVar (IORef (IVarContents a)) 
Instances
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 #

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