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 a :>> b = a :>> b
- data chann1 :<+> chann2 = chann1 :<+> chann2
- data ChanIn (a :: 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)
- 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
- type AllChans r2 r3 l1 r4 l2 t2 s t1 s2 t5 l3 l4 = (LabeledOpticTo (LabelableTy r2) "in-ch" (->), LabeledOpticF (LabelableTy r3) (Const (HList l3)), LabeledOpticP (LabelableTy r3) (->), LabeledOpticTo (LabelableTy r3) "Source" (->), LabeledOpticF (LabelableTy r2) (Const (HList l1)), LabeledOpticP (LabelableTy r2) (->), LabeledOpticTo (LabelableTy r2) "out-ch" (->), LabeledOpticTo (LabelableTy r4) "in-ch" (->), LabeledOpticF (LabelableTy r3) (Const (HList l2)), LabeledOpticTo (LabelableTy r3) "generator" (->), LabeledOpticF (LabelableTy r3) (Const (HList l1)), LabeledOpticF (LabelableTy r2) (Const (HList l3)), LabeledOpticF (LabelableTy r4) (Const (HList l4)), LabeledOpticP (LabelableTy r4) (->), LabeledOpticTo (LabelableTy r4) "out-ch" (->), LabeledOpticF (LabelableTy r3) (Const (HList l4)), LabeledOpticF (LabelableTy r4) (Const (HList l2)), HAppendList l1 l2, Labelable "generator" r3 t2 t2 (r4 s) (r4 t1), Labelable "in-ch" r2 s2 t5 (HList l3) (HList l3), Labelable "in-ch" r4 s t1 (HList l2) (HList l2), Labelable "Source" r3 t2 t2 (r2 s2) (r2 t5), Labelable "out-ch" r2 s2 t5 (HList l1) (HList l1), Labelable "out-ch" r4 s t1 (HList l4) (HList l4))
- type FilterChans r b t a = (LabeledOpticF (LabelableTy r) (Const b), LabeledOpticTo (LabelableTy r) "out-ch" (->), Labelable "out-ch" r t t b b, LabeledOpticF (LabelableTy r) (Const a), LabeledOpticP (LabelableTy r) (->), LabeledOpticTo (LabelableTy r) "in-ch" (->), Labelable "in-ch" r t t a a)
- inGenOut :: AllChans r2 r3 l1 r4 l2 t2 s t1 s2 t5 l3 l4 => r3 t2 -> (HList l3, HList (HAppendListR l1 l2), HList l4)
- makeChans :: forall (a :: Type). MkChans a => IO (HChan a)
- getFilterChannels :: FilterChans r b t a => r t -> (a, b)
Documentation
Eof
is the End of Channel mark in the DP Definition Flow
Instances
MkCh inToGen => MkChans (ChansFilter (Source (Channel inToGen) :>> (Generator (Channel genToOut) :>> 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) :>> Sink))) Source # | |
type HChan (Source (Channel inToGen) :>> (Generator (Channel genToOut) :>> Sink)) Source # | |
Defined in DynamicPipeline.Flow type HChan (Source (Channel inToGen) :>> (Generator (Channel genToOut) :>> Sink)) = Record '[Tagged "Source" (Record '[Tagged "in-ch" (HList (HChI inToGen)), Tagged "out-ch" (HList (HChO inToGen))]), Tagged "generator" (Record '[Tagged "in-ch" (HList (HChI genToOut)), Tagged "out-ch" (HList (HChO genToOut))]), Tagged "Sink" (Record '[Tagged "in-ch" (HList (HChI genToOut))])] |
data Generator (a :: Type) Source #
Generator
contains the Generator
Stage its Channels definitions in the DP definition Flow.
a ~ Channel
Instances
MkCh inToGen => MkChans (ChansFilter (Source (Channel inToGen) :>> (Generator (Channel genToOut) :>> 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) :>> Sink))) Source # | |
type HChan (Source (Channel inToGen) :>> (Generator (Channel genToOut) :>> Sink)) Source # | |
Defined in DynamicPipeline.Flow type HChan (Source (Channel inToGen) :>> (Generator (Channel genToOut) :>> Sink)) = Record '[Tagged "Source" (Record '[Tagged "in-ch" (HList (HChI inToGen)), Tagged "out-ch" (HList (HChO inToGen))]), Tagged "generator" (Record '[Tagged "in-ch" (HList (HChI genToOut)), Tagged "out-ch" (HList (HChO genToOut))]), Tagged "Sink" (Record '[Tagged "in-ch" (HList (HChI genToOut))])] |
data Source (a :: Type) Source #
Instances
MkCh inToGen => MkChans (ChansFilter (Source (Channel inToGen) :>> (Generator (Channel genToOut) :>> 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) :>> Sink))) Source # | |
type HChan (Source (Channel inToGen) :>> (Generator (Channel genToOut) :>> Sink)) Source # | |
Defined in DynamicPipeline.Flow type HChan (Source (Channel inToGen) :>> (Generator (Channel genToOut) :>> Sink)) = Record '[Tagged "Source" (Record '[Tagged "in-ch" (HList (HChI inToGen)), Tagged "out-ch" (HList (HChO inToGen))]), Tagged "generator" (Record '[Tagged "in-ch" (HList (HChI genToOut)), Tagged "out-ch" (HList (HChO genToOut))]), Tagged "Sink" (Record '[Tagged "in-ch" (HList (HChI genToOut))])] |
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
MkCh inToGen => MkChans (ChansFilter (Source (Channel inToGen) :>> (Generator (Channel genToOut) :>> 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) :>> Sink))) Source # | |
type HChan (Source (Channel inToGen) :>> (Generator (Channel genToOut) :>> Sink)) Source # | |
Defined in DynamicPipeline.Flow type HChan (Source (Channel inToGen) :>> (Generator (Channel genToOut) :>> Sink)) = Record '[Tagged "Source" (Record '[Tagged "in-ch" (HList (HChI inToGen)), Tagged "out-ch" (HList (HChO inToGen))]), Tagged "generator" (Record '[Tagged "in-ch" (HList (HChI genToOut)), Tagged "out-ch" (HList (HChO genToOut))]), Tagged "Sink" (Record '[Tagged "in-ch" (HList (HChI genToOut))])] |
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) :>> 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) => MkChans (Source (Channel inToGen) :>> (Generator (Channel genToOut) :>> 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) :>> Sink)) Source # | |
Defined in DynamicPipeline.Flow type HChan (Source (Channel inToGen) :>> (Generator (Channel genToOut) :>> Sink)) = Record '[Tagged "Source" (Record '[Tagged "in-ch" (HList (HChI inToGen)), Tagged "out-ch" (HList (HChO inToGen))]), Tagged "generator" (Record '[Tagged "in-ch" (HList (HChI genToOut)), Tagged "out-ch" (HList (HChO genToOut))]), Tagged "Sink" (Record '[Tagged "in-ch" (HList (HChI genToOut))])] |
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) :>> Sink))) Source # | |
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
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) :>> 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
type AllChans r2 r3 l1 r4 l2 t2 s t1 s2 t5 l3 l4 = (LabeledOpticTo (LabelableTy r2) "in-ch" (->), LabeledOpticF (LabelableTy r3) (Const (HList l3)), LabeledOpticP (LabelableTy r3) (->), LabeledOpticTo (LabelableTy r3) "Source" (->), LabeledOpticF (LabelableTy r2) (Const (HList l1)), LabeledOpticP (LabelableTy r2) (->), LabeledOpticTo (LabelableTy r2) "out-ch" (->), LabeledOpticTo (LabelableTy r4) "in-ch" (->), LabeledOpticF (LabelableTy r3) (Const (HList l2)), LabeledOpticTo (LabelableTy r3) "generator" (->), LabeledOpticF (LabelableTy r3) (Const (HList l1)), LabeledOpticF (LabelableTy r2) (Const (HList l3)), LabeledOpticF (LabelableTy r4) (Const (HList l4)), LabeledOpticP (LabelableTy r4) (->), LabeledOpticTo (LabelableTy r4) "out-ch" (->), LabeledOpticF (LabelableTy r3) (Const (HList l4)), LabeledOpticF (LabelableTy r4) (Const (HList l2)), HAppendList l1 l2, Labelable "generator" r3 t2 t2 (r4 s) (r4 t1), Labelable "in-ch" r2 s2 t5 (HList l3) (HList l3), Labelable "in-ch" r4 s t1 (HList l2) (HList l2), Labelable "Source" r3 t2 t2 (r2 s2) (r2 t5), Labelable "out-ch" r2 s2 t5 (HList l1) (HList l1), Labelable "out-ch" r4 s t1 (HList l4) (HList l4)) Source #
Warning: INTERNAL USE
type FilterChans r b t a = (LabeledOpticF (LabelableTy r) (Const b), LabeledOpticTo (LabelableTy r) "out-ch" (->), Labelable "out-ch" r t t b b, LabeledOpticF (LabelableTy r) (Const a), LabeledOpticP (LabelableTy r) (->), LabeledOpticTo (LabelableTy r) "in-ch" (->), Labelable "in-ch" r t t a a) Source #
Warning: INTERNAL USE
inGenOut :: AllChans r2 r3 l1 r4 l2 t2 s t1 s2 t5 l3 l4 => r3 t2 -> (HList l3, HList (HAppendListR l1 l2), HList l4) Source #
Warning: INTERNAL USE
getFilterChannels :: FilterChans r b t a => r t -> (a, b) Source #
Warning: INTERNAL USE