imperative-edsl-0.5: 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 fs a where Source

Constructors

ForkWithId :: (ThreadId -> prog ()) -> ThreadCMD (Param3 prog exp pred) ThreadId 
Kill :: ThreadId -> ThreadCMD (Param3 prog exp pred) () 
Wait :: ThreadId -> ThreadCMD (Param3 prog exp pred) () 

Instances

HFunctor * * ((,) k ((,) k *)) (ThreadCMD k k) Source 
HBifunctor * k ((,) k *) (ThreadCMD (k -> *) k) Source 
(:<:) ((,) (* -> *) ((,) (k -> *) ((,) k1 *))) * (ThreadCMD (k -> *) k1) instr => Reexpressible k ((,) k *) (ThreadCMD (k -> *) k) instr Source 
InterpBi ((,) k *) * (ThreadCMD (* -> *) k) IO (Param1 k pred) Source 

data ChanCMD fs a where Source

Constructors

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

Instances

HFunctor k * ((,) (* -> *) ((,) (* -> Constraint) *)) (ChanCMD (k -> *)) Source 
HBifunctor * * ((,) (* -> Constraint) *) (ChanCMD (* -> *)) Source 
(:<:) ((,) (* -> *) ((,) (* -> *) ((,) (* -> Constraint) *))) * (ChanCMD (* -> *)) instr => Reexpressible * ((,) (* -> Constraint) *) (ChanCMD (* -> *)) instr Source 
InterpBi ((,) (* -> Constraint) *) * (ChanCMD (* -> *)) IO (Param1 (* -> Constraint) pred) Source