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