imperative-edsl-0.4.1: Deep embedding of imperative programs with code generation

Safe HaskellNone
LanguageHaskell2010

Language.Embedded.Concurrent.CMD

Synopsis

Documentation

data ThreadId Source

Constructors

TIDEval ThreadId (Flag ()) 
TIDComp TID 

Instances

type ChanBound = Word16 Source

Maximum number of elements in some bounded channel.

data Chan t a Source

A bounded channel.

data ThreadCMD prog a where Source

Constructors

ForkWithId :: (ThreadId -> prog ()) -> ThreadCMD prog ThreadId 
Kill :: ThreadId -> ThreadCMD prog () 
Wait :: ThreadId -> ThreadCMD prog () 

Instances

data ChanCMD exp prog a where Source

Constructors

NewChan :: VarPred exp a => exp ChanBound -> ChanCMD exp prog (Chan t a) 
ReadChan :: VarPred exp a => Chan t a -> ChanCMD exp prog (exp a) 
WriteChan :: (VarPred exp a, VarPred exp Bool) => Chan t a -> exp a -> ChanCMD exp prog (exp Bool) 
CloseChan :: Chan Closeable a -> ChanCMD exp prog () 
ReadOK :: VarPred exp Bool => Chan Closeable a -> ChanCMD exp prog (exp Bool) 

Instances

HFunctor * * (ChanCMD exp) Source 
EvalExp exp => Interp (ChanCMD exp) IO Source 
type IExp (ChanCMD e) = e Source 
type IExp ((:+:) (* -> *) * (ChanCMD e) i) = e Source