Copyright  (c) 2021 Juan Pablo Royo Sales 

License  BSD3 
Maintainer  juanpablo.royo@gmail.com 
Stability  experimental 
Portability  GHC 
Safe Haskell  None 
Language  Haskell2010 
Synopsis
 data Eof
 data Sink
 data Generator (a :: Type)
 data Source (a :: Type)
 data Channel (a :: Type)
 data FeedbackChannel (a :: Type)
 data a :=> b = a :=> b
 data chann1 :<+> chann2 = chann1 :<+> chann2
 data ChanIn (a :: Type)
 data ChanInIn (a :: Type) (b :: Type)
 data ChanOut (a :: Type)
 data ChanOutIn (a :: Type) (b :: Type)
 data ChansFilter (a :: Type)
 data ChanWriteSource (a :: Type)
 data ChanReadWriteGen (a :: Type)
 data ChanReadOut (a :: Type)
 data ChanRecord slr slw glr glw silr silw = ChanRecord {}
 data InOutChan lr lw = InOutChan {
 _iocReadChans :: HList lr
 _iocWriteChans :: HList lw
 class MkCh (a :: Type) where
 class MkChans (a :: Type) where
 type ExpandGenToCh a filter = ExpandToHList (ChanReadWriteGen a) filter
 type ExpandSinkToCh a = ExpandToHList (ChanReadOut a) Void
 type ExpandSourceToCh a = ExpandToHList (ChanWriteSource a) Void
 type ExpandFilterToCh a param = ExpandGenToCh a param
 inGenOut :: (HAppendList slr slw, HAppendList glr glw, HAppendList silr silw) => ChanRecord slr slw glr glw silr silw > (HList (HAppendListR slr slw), HList (HAppendListR glr glw), HList (HAppendListR silr silw))
 toHList :: HAppendList lr lw => InOutChan lr lw > HList (HAppendListR lr lw)
 makeChans :: forall (a :: Type) slr slw glr glw silr silw. (MkChans a, HChan a ~ ChanRecord slr slw glr glw silr silw) => IO (ChanRecord slr slw glr glw silr silw)
 makeChansF :: forall (a :: Type) flr flw. (MkChans a, HChan a ~ InOutChan flr flw) => IO (InOutChan flr flw)
 getFilterChannels :: InOutChan lr lw > (HList lr, HList lw)
Documentation
Eof
is the End of Channel mark in the DP Definition Flow
Instances
data Generator (a :: Type) Source #
Generator
contains the Generator
Stage its Channels definitions in the DP definition Flow.
a ~ Channel
Instances
data Source (a :: Type) Source #
Instances
data Channel (a :: Type) Source #
Channel
is the Container Type of Open Union Type which is going to be defined with :<+>
.
a ~ (Type:<+>
Type:<+>
...:<+>
Eof)
Instances
data FeedbackChannel (a :: Type) Source #
FeedbackChannel
is the Container Type of Open Union Type which is going to be defined with :<+>
and indicates that this
 Channel is for feedback to Source
a ~ (Type:<+>
Type:<+>
...:<+>
Eof)
Instances
MkCh inToGen => MkChans (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source #  
Defined in DynamicPipeline.Flow  
(MkCh inToGen, MkCh genToOut, MkCh toSource, HAppendList (HChO genToOut) (HChO toSource)) => MkChans (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))) Source #  
type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source #  
Defined in DynamicPipeline.Flow  
type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))) Source #  
data a :=> b infixr 5 Source #
This is the Type level function of the Open Union Type for Stages.
This should have the form:
Source
(Channel
..):=>
Generator
(Channel
..):=>
Sink
a :=> b infixr 5 
Instances
Functor ((:=>) a) Source #  
Foldable ((:=>) a) Source #  
Defined in DynamicPipeline.Flow fold :: Monoid m => (a :=> m) > m # foldMap :: Monoid m => (a0 > m) > (a :=> a0) > m # foldMap' :: Monoid m => (a0 > m) > (a :=> a0) > m # foldr :: (a0 > b > b) > b > (a :=> a0) > b # foldr' :: (a0 > b > b) > b > (a :=> a0) > b # foldl :: (b > a0 > b) > b > (a :=> a0) > b # foldl' :: (b > a0 > b) > b > (a :=> a0) > b # foldr1 :: (a0 > a0 > a0) > (a :=> a0) > a0 # foldl1 :: (a0 > a0 > a0) > (a :=> a0) > a0 # toList :: (a :=> a0) > [a0] # elem :: Eq a0 => a0 > (a :=> a0) > Bool # maximum :: Ord a0 => (a :=> a0) > a0 # minimum :: Ord a0 => (a :=> a0) > a0 #  
Traversable ((:=>) a) Source #  
MkCh inToGen => MkChans (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source #  
Defined in DynamicPipeline.Flow  
MkCh inToGen => MkChans (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) Source #  
(Bounded a, Bounded b) => Bounded (a :=> b) Source #  
(Eq a, Eq b) => Eq (a :=> b) Source #  
(Show a, Show b) => Show (a :=> b) Source #  
(MkCh inToGen, MkCh genToOut, MkCh toSource, HAppendList (HChO genToOut) (HChO toSource)) => MkChans (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))) Source #  
(MkCh inToGen, MkCh genToOut) => MkChans (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink)) Source #  
Defined in DynamicPipeline.Flow  
type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source #  
Defined in DynamicPipeline.Flow  
type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) Source #  
type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))) Source #  
type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink)) Source #  
data chann1 :<+> chann2 infixr 5 Source #
This is the Type level function of the Open Union Type for Channels.
Channels forms an Open Union Type in each stage because according to DPP we can have multiple In and Out Channels in a Single Stage.
Eof
should be the last Channel of the Open Union Type to indicate termination of the Grammar.
chann1 ~ Type
chann2 ~ Type
chann1 :<+> chann2 infixr 5 
Instances
Functor ((:<+>) chann1) Source #  
Foldable ((:<+>) chann1) Source #  
Defined in DynamicPipeline.Flow fold :: Monoid m => (chann1 :<+> m) > m # foldMap :: Monoid m => (a > m) > (chann1 :<+> a) > m # foldMap' :: Monoid m => (a > m) > (chann1 :<+> a) > m # foldr :: (a > b > b) > b > (chann1 :<+> a) > b # foldr' :: (a > b > b) > b > (chann1 :<+> a) > b # foldl :: (b > a > b) > b > (chann1 :<+> a) > b # foldl' :: (b > a > b) > b > (chann1 :<+> a) > b # foldr1 :: (a > a > a) > (chann1 :<+> a) > a # foldl1 :: (a > a > a) > (chann1 :<+> a) > a # toList :: (chann1 :<+> a) > [a] # null :: (chann1 :<+> a) > Bool # length :: (chann1 :<+> a) > Int # elem :: Eq a => a > (chann1 :<+> a) > Bool # maximum :: Ord a => (chann1 :<+> a) > a # minimum :: Ord a => (chann1 :<+> a) > a #  
Traversable ((:<+>) chann1) Source #  
Defined in DynamicPipeline.Flow  
(Bounded chann1, Bounded chann2) => Bounded (chann1 :<+> chann2) Source #  
(Eq chann1, Eq chann2) => Eq (chann1 :<+> chann2) Source #  
(Show chann1, Show chann2) => Show (chann1 :<+> chann2) Source #  
MkCh more => MkCh (a :<+> more) Source #  
type HChI (a :<+> more) Source #  
Defined in DynamicPipeline.Flow  
type HChO (a :<+> more) Source #  
Defined in DynamicPipeline.Flow 
data ChansFilter (a :: Type) Source #
Warning: INTERNAL USE
Instances
MkCh inToGen => MkChans (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source #  
Defined in DynamicPipeline.Flow  
MkCh inToGen => MkChans (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) Source #  
type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source #  
Defined in DynamicPipeline.Flow  
type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) Source #  
data ChanWriteSource (a :: Type) Source #
Warning: INTERNAL USE
data ChanReadWriteGen (a :: Type) Source #
Warning: INTERNAL USE
data ChanReadOut (a :: Type) Source #
Warning: INTERNAL USE
data ChanRecord slr slw glr glw silr silw Source #
InOutChan  

class MkCh (a :: Type) where Source #
Warning: INTERNAL USE
class MkChans (a :: Type) where Source #
Warning: INTERNAL USE
Instances
MkCh inToGen => MkChans (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source #  
Defined in DynamicPipeline.Flow  
MkCh inToGen => MkChans (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) Source #  
(MkCh inToGen, MkCh genToOut, MkCh toSource, HAppendList (HChO genToOut) (HChO toSource)) => MkChans (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))) Source #  
(MkCh inToGen, MkCh genToOut) => MkChans (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink)) Source #  
Defined in DynamicPipeline.Flow 
type ExpandGenToCh a filter = ExpandToHList (ChanReadWriteGen a) filter Source #
Warning: INTERNAL USE
type ExpandSinkToCh a = ExpandToHList (ChanReadOut a) Void Source #
Warning: INTERNAL USE
type ExpandSourceToCh a = ExpandToHList (ChanWriteSource a) Void Source #
Warning: INTERNAL USE
type ExpandFilterToCh a param = ExpandGenToCh a param Source #
Warning: INTERNAL USE
inGenOut :: (HAppendList slr slw, HAppendList glr glw, HAppendList silr silw) => ChanRecord slr slw glr glw silr silw > (HList (HAppendListR slr slw), HList (HAppendListR glr glw), HList (HAppendListR silr silw)) Source #
Warning: INTERNAL USE
makeChans :: forall (a :: Type) slr slw glr glw silr silw. (MkChans a, HChan a ~ ChanRecord slr slw glr glw silr silw) => IO (ChanRecord slr slw glr glw silr silw) Source #
Warning: INTERNAL USE