dynamic-pipeline-0.3.0.0: Library Type Safe implementation of Dynamic Pipeline Paradigm (DPP).
Copyright(c) 2021 Juan Pablo Royo Sales
LicenseBSD3
Maintainerjuanpablo.royo@gmail.com
Stabilityexperimental
PortabilityGHC
Safe HaskellNone
LanguageHaskell2010

DynamicPipeline.Flow

Description

 
Synopsis

Documentation

data Eof Source #

Eof is the End of Channel mark in the DP Definition Flow

Instances

Instances details
MkCh Eof Source # 
Instance details

Defined in DynamicPipeline.Flow

Associated Types

type HChI Eof :: [Type] Source #

type HChO Eof :: [Type] Source #

Methods

mkCh :: Proxy Eof -> IO (HList (HChI Eof), HList (HChO Eof)) Source #

type HChI Eof Source # 
Instance details

Defined in DynamicPipeline.Flow

type HChI Eof = '[] :: [Type]
type HChO Eof Source # 
Instance details

Defined in DynamicPipeline.Flow

type HChO Eof = '[] :: [Type]

data Sink Source #

Sink contains the Sink Stage end of Flow of DP definition.

Instances

Instances details
MkCh inToGen => MkChans (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source # 
Instance details

Defined in DynamicPipeline.Flow

Associated Types

type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source #

Methods

mkChans :: Proxy (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) -> IO (HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))))) Source #

MkCh inToGen => MkChans (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) Source # 
Instance details

Defined in DynamicPipeline.Flow

Associated Types

type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) Source #

Methods

mkChans :: Proxy (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) -> IO (HChan (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 # 
Instance details

Defined in DynamicPipeline.Flow

Associated Types

type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))) Source #

Methods

mkChans :: Proxy (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))) -> IO (HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source #

(MkCh inToGen, MkCh genToOut) => MkChans (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink)) Source # 
Instance details

Defined in DynamicPipeline.Flow

Associated Types

type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink)) Source #

Methods

mkChans :: Proxy (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink)) -> IO (HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) Source #

type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source # 
Instance details

Defined in DynamicPipeline.Flow

type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) = InOutChan (HChI inToGen) (HChO inToGen)
type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) Source # 
Instance details

Defined in DynamicPipeline.Flow

type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) = InOutChan (HChI inToGen) (HChO inToGen)
type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))) Source # 
Instance details

Defined in DynamicPipeline.Flow

type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))) = ChanRecord (HChI toSource) (HChO inToGen) (HChI inToGen) (HAppendListR (HChO genToOut) (HChO toSource)) (HChI genToOut) ('[] :: [Type])
type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink)) Source # 
Instance details

Defined in DynamicPipeline.Flow

type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink)) = ChanRecord ('[] :: [Type]) (HChO inToGen) (HChI inToGen) (HChO genToOut) (HChI genToOut) ('[] :: [Type])

data Generator (a :: Type) Source #

Generator contains the Generator Stage its Channels definitions in the DP definition Flow.

 a ~ Channel

Instances

Instances details
MkCh inToGen => MkChans (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source # 
Instance details

Defined in DynamicPipeline.Flow

Associated Types

type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source #

Methods

mkChans :: Proxy (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) -> IO (HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))))) Source #

MkCh inToGen => MkChans (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) Source # 
Instance details

Defined in DynamicPipeline.Flow

Associated Types

type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) Source #

Methods

mkChans :: Proxy (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) -> IO (HChan (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 # 
Instance details

Defined in DynamicPipeline.Flow

Associated Types

type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))) Source #

Methods

mkChans :: Proxy (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))) -> IO (HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source #

(MkCh inToGen, MkCh genToOut) => MkChans (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink)) Source # 
Instance details

Defined in DynamicPipeline.Flow

Associated Types

type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink)) Source #

Methods

mkChans :: Proxy (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink)) -> IO (HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) Source #

type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source # 
Instance details

Defined in DynamicPipeline.Flow

type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) = InOutChan (HChI inToGen) (HChO inToGen)
type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) Source # 
Instance details

Defined in DynamicPipeline.Flow

type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) = InOutChan (HChI inToGen) (HChO inToGen)
type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))) Source # 
Instance details

Defined in DynamicPipeline.Flow

type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))) = ChanRecord (HChI toSource) (HChO inToGen) (HChI inToGen) (HAppendListR (HChO genToOut) (HChO toSource)) (HChI genToOut) ('[] :: [Type])
type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink)) Source # 
Instance details

Defined in DynamicPipeline.Flow

type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink)) = ChanRecord ('[] :: [Type]) (HChO inToGen) (HChI inToGen) (HChO genToOut) (HChI genToOut) ('[] :: [Type])

data Source (a :: Type) Source #

Source contains the Source Stage its Channels definitions in the DP definition Flow.

 a ~ Channel

Instances

Instances details
MkCh inToGen => MkChans (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source # 
Instance details

Defined in DynamicPipeline.Flow

Associated Types

type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source #

Methods

mkChans :: Proxy (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) -> IO (HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))))) Source #

MkCh inToGen => MkChans (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) Source # 
Instance details

Defined in DynamicPipeline.Flow

Associated Types

type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) Source #

Methods

mkChans :: Proxy (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) -> IO (HChan (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 # 
Instance details

Defined in DynamicPipeline.Flow

Associated Types

type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))) Source #

Methods

mkChans :: Proxy (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))) -> IO (HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source #

(MkCh inToGen, MkCh genToOut) => MkChans (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink)) Source # 
Instance details

Defined in DynamicPipeline.Flow

Associated Types

type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink)) Source #

Methods

mkChans :: Proxy (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink)) -> IO (HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) Source #

type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source # 
Instance details

Defined in DynamicPipeline.Flow

type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) = InOutChan (HChI inToGen) (HChO inToGen)
type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) Source # 
Instance details

Defined in DynamicPipeline.Flow

type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) = InOutChan (HChI inToGen) (HChO inToGen)
type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))) Source # 
Instance details

Defined in DynamicPipeline.Flow

type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))) = ChanRecord (HChI toSource) (HChO inToGen) (HChI inToGen) (HAppendListR (HChO genToOut) (HChO toSource)) (HChI genToOut) ('[] :: [Type])
type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink)) Source # 
Instance details

Defined in DynamicPipeline.Flow

type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink)) = ChanRecord ('[] :: [Type]) (HChO inToGen) (HChI inToGen) (HChO genToOut) (HChI genToOut) ('[] :: [Type])

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

Instances details
MkCh inToGen => MkChans (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source # 
Instance details

Defined in DynamicPipeline.Flow

Associated Types

type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source #

Methods

mkChans :: Proxy (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) -> IO (HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))))) Source #

MkCh inToGen => MkChans (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) Source # 
Instance details

Defined in DynamicPipeline.Flow

Associated Types

type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) Source #

Methods

mkChans :: Proxy (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) -> IO (HChan (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 # 
Instance details

Defined in DynamicPipeline.Flow

Associated Types

type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))) Source #

Methods

mkChans :: Proxy (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))) -> IO (HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source #

(MkCh inToGen, MkCh genToOut) => MkChans (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink)) Source # 
Instance details

Defined in DynamicPipeline.Flow

Associated Types

type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink)) Source #

Methods

mkChans :: Proxy (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink)) -> IO (HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) Source #

type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source # 
Instance details

Defined in DynamicPipeline.Flow

type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) = InOutChan (HChI inToGen) (HChO inToGen)
type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) Source # 
Instance details

Defined in DynamicPipeline.Flow

type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) = InOutChan (HChI inToGen) (HChO inToGen)
type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))) Source # 
Instance details

Defined in DynamicPipeline.Flow

type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))) = ChanRecord (HChI toSource) (HChO inToGen) (HChI inToGen) (HAppendListR (HChO genToOut) (HChO toSource)) (HChI genToOut) ('[] :: [Type])
type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink)) Source # 
Instance details

Defined in DynamicPipeline.Flow

type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink)) = ChanRecord ('[] :: [Type]) (HChO inToGen) (HChI inToGen) (HChO genToOut) (HChI genToOut) ('[] :: [Type])

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

Instances details
MkCh inToGen => MkChans (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source # 
Instance details

Defined in DynamicPipeline.Flow

Associated Types

type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source #

Methods

mkChans :: Proxy (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) -> IO (HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))))) Source #

(MkCh inToGen, MkCh genToOut, MkCh toSource, HAppendList (HChO genToOut) (HChO toSource)) => MkChans (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))) Source # 
Instance details

Defined in DynamicPipeline.Flow

Associated Types

type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))) Source #

Methods

mkChans :: Proxy (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))) -> IO (HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source #

type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source # 
Instance details

Defined in DynamicPipeline.Flow

type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) = InOutChan (HChI inToGen) (HChO inToGen)
type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))) Source # 
Instance details

Defined in DynamicPipeline.Flow

type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))) = ChanRecord (HChI toSource) (HChO inToGen) (HChI inToGen) (HAppendListR (HChO genToOut) (HChO toSource)) (HChI genToOut) ('[] :: [Type])

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

Constructors

a :=> b infixr 5 

Instances

Instances details
Functor ((:=>) a) Source # 
Instance details

Defined in DynamicPipeline.Flow

Methods

fmap :: (a0 -> b) -> (a :=> a0) -> a :=> b #

(<$) :: a0 -> (a :=> b) -> a :=> a0 #

Foldable ((:=>) a) Source # 
Instance details

Defined in DynamicPipeline.Flow

Methods

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] #

null :: (a :=> a0) -> Bool #

length :: (a :=> a0) -> Int #

elem :: Eq a0 => a0 -> (a :=> a0) -> Bool #

maximum :: Ord a0 => (a :=> a0) -> a0 #

minimum :: Ord a0 => (a :=> a0) -> a0 #

sum :: Num a0 => (a :=> a0) -> a0 #

product :: Num a0 => (a :=> a0) -> a0 #

Traversable ((:=>) a) Source # 
Instance details

Defined in DynamicPipeline.Flow

Methods

traverse :: Applicative f => (a0 -> f b) -> (a :=> a0) -> f (a :=> b) #

sequenceA :: Applicative f => (a :=> f a0) -> f (a :=> a0) #

mapM :: Monad m => (a0 -> m b) -> (a :=> a0) -> m (a :=> b) #

sequence :: Monad m => (a :=> m a0) -> m (a :=> a0) #

MkCh inToGen => MkChans (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source # 
Instance details

Defined in DynamicPipeline.Flow

Associated Types

type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source #

Methods

mkChans :: Proxy (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) -> IO (HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))))) Source #

MkCh inToGen => MkChans (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) Source # 
Instance details

Defined in DynamicPipeline.Flow

Associated Types

type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) Source #

Methods

mkChans :: Proxy (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) -> IO (HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink)))) Source #

(Bounded a, Bounded b) => Bounded (a :=> b) Source # 
Instance details

Defined in DynamicPipeline.Flow

Methods

minBound :: a :=> b #

maxBound :: a :=> b #

(Eq a, Eq b) => Eq (a :=> b) Source # 
Instance details

Defined in DynamicPipeline.Flow

Methods

(==) :: (a :=> b) -> (a :=> b) -> Bool #

(/=) :: (a :=> b) -> (a :=> b) -> Bool #

(Show a, Show b) => Show (a :=> b) Source # 
Instance details

Defined in DynamicPipeline.Flow

Methods

showsPrec :: Int -> (a :=> b) -> ShowS #

show :: (a :=> b) -> String #

showList :: [a :=> b] -> ShowS #

(MkCh inToGen, MkCh genToOut, MkCh toSource, HAppendList (HChO genToOut) (HChO toSource)) => MkChans (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))) Source # 
Instance details

Defined in DynamicPipeline.Flow

Associated Types

type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))) Source #

Methods

mkChans :: Proxy (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))) -> IO (HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source #

(MkCh inToGen, MkCh genToOut) => MkChans (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink)) Source # 
Instance details

Defined in DynamicPipeline.Flow

Associated Types

type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink)) Source #

Methods

mkChans :: Proxy (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink)) -> IO (HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) Source #

type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source # 
Instance details

Defined in DynamicPipeline.Flow

type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) = InOutChan (HChI inToGen) (HChO inToGen)
type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) Source # 
Instance details

Defined in DynamicPipeline.Flow

type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) = InOutChan (HChI inToGen) (HChO inToGen)
type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))) Source # 
Instance details

Defined in DynamicPipeline.Flow

type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))) = ChanRecord (HChI toSource) (HChO inToGen) (HChI inToGen) (HAppendListR (HChO genToOut) (HChO toSource)) (HChI genToOut) ('[] :: [Type])
type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink)) Source # 
Instance details

Defined in DynamicPipeline.Flow

type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink)) = ChanRecord ('[] :: [Type]) (HChO inToGen) (HChI inToGen) (HChO genToOut) (HChI genToOut) ('[] :: [Type])

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

Constructors

chann1 :<+> chann2 infixr 5 

Instances

Instances details
Functor ((:<+>) chann1) Source # 
Instance details

Defined in DynamicPipeline.Flow

Methods

fmap :: (a -> b) -> (chann1 :<+> a) -> chann1 :<+> b #

(<$) :: a -> (chann1 :<+> b) -> chann1 :<+> a #

Foldable ((:<+>) chann1) Source # 
Instance details

Defined in DynamicPipeline.Flow

Methods

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 #

sum :: Num a => (chann1 :<+> a) -> a #

product :: Num a => (chann1 :<+> a) -> a #

Traversable ((:<+>) chann1) Source # 
Instance details

Defined in DynamicPipeline.Flow

Methods

traverse :: Applicative f => (a -> f b) -> (chann1 :<+> a) -> f (chann1 :<+> b) #

sequenceA :: Applicative f => (chann1 :<+> f a) -> f (chann1 :<+> a) #

mapM :: Monad m => (a -> m b) -> (chann1 :<+> a) -> m (chann1 :<+> b) #

sequence :: Monad m => (chann1 :<+> m a) -> m (chann1 :<+> a) #

(Bounded chann1, Bounded chann2) => Bounded (chann1 :<+> chann2) Source # 
Instance details

Defined in DynamicPipeline.Flow

Methods

minBound :: chann1 :<+> chann2 #

maxBound :: chann1 :<+> chann2 #

(Eq chann1, Eq chann2) => Eq (chann1 :<+> chann2) Source # 
Instance details

Defined in DynamicPipeline.Flow

Methods

(==) :: (chann1 :<+> chann2) -> (chann1 :<+> chann2) -> Bool #

(/=) :: (chann1 :<+> chann2) -> (chann1 :<+> chann2) -> Bool #

(Show chann1, Show chann2) => Show (chann1 :<+> chann2) Source # 
Instance details

Defined in DynamicPipeline.Flow

Methods

showsPrec :: Int -> (chann1 :<+> chann2) -> ShowS #

show :: (chann1 :<+> chann2) -> String #

showList :: [chann1 :<+> chann2] -> ShowS #

MkCh more => MkCh (a :<+> more) Source # 
Instance details

Defined in DynamicPipeline.Flow

Associated Types

type HChI (a :<+> more) :: [Type] Source #

type HChO (a :<+> more) :: [Type] Source #

Methods

mkCh :: Proxy (a :<+> more) -> IO (HList (HChI (a :<+> more)), HList (HChO (a :<+> more))) Source #

type HChI (a :<+> more) Source # 
Instance details

Defined in DynamicPipeline.Flow

type HChI (a :<+> more) = ReadChannel a ': HChI more
type HChO (a :<+> more) Source # 
Instance details

Defined in DynamicPipeline.Flow

type HChO (a :<+> more) = WriteChannel a ': HChO more

data ChanIn (a :: Type) Source #

Warning: INTERNAL USE

data ChanInIn (a :: Type) (b :: Type) Source #

Warning: INTERNAL USE

data ChanOut (a :: Type) Source #

Warning: INTERNAL USE

data ChanOutIn (a :: Type) (b :: Type) Source #

Warning: INTERNAL USE

data ChansFilter (a :: Type) Source #

Warning: INTERNAL USE

Instances

Instances details
MkCh inToGen => MkChans (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source # 
Instance details

Defined in DynamicPipeline.Flow

Associated Types

type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source #

Methods

mkChans :: Proxy (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) -> IO (HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))))) Source #

MkCh inToGen => MkChans (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) Source # 
Instance details

Defined in DynamicPipeline.Flow

Associated Types

type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) Source #

Methods

mkChans :: Proxy (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) -> IO (HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink)))) Source #

type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source # 
Instance details

Defined in DynamicPipeline.Flow

type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) = InOutChan (HChI inToGen) (HChO inToGen)
type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) Source # 
Instance details

Defined in DynamicPipeline.Flow

type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) = InOutChan (HChI inToGen) (HChO inToGen)

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 #

Constructors

ChanRecord 

Fields

data InOutChan lr lw Source #

Constructors

InOutChan 

class MkCh (a :: Type) where Source #

Warning: INTERNAL USE

Associated Types

type HChI a :: [Type] Source #

type HChO a :: [Type] Source #

Methods

mkCh :: Proxy a -> IO (HList (HChI a), HList (HChO a)) Source #

Instances

Instances details
MkCh Eof Source # 
Instance details

Defined in DynamicPipeline.Flow

Associated Types

type HChI Eof :: [Type] Source #

type HChO Eof :: [Type] Source #

Methods

mkCh :: Proxy Eof -> IO (HList (HChI Eof), HList (HChO Eof)) Source #

MkCh more => MkCh (a :<+> more) Source # 
Instance details

Defined in DynamicPipeline.Flow

Associated Types

type HChI (a :<+> more) :: [Type] Source #

type HChO (a :<+> more) :: [Type] Source #

Methods

mkCh :: Proxy (a :<+> more) -> IO (HList (HChI (a :<+> more)), HList (HChO (a :<+> more))) Source #

class MkChans (a :: Type) where Source #

Warning: INTERNAL USE

Associated Types

type HChan a :: Type Source #

Methods

mkChans :: Proxy a -> IO (HChan a) Source #

Instances

Instances details
MkCh inToGen => MkChans (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source # 
Instance details

Defined in DynamicPipeline.Flow

Associated Types

type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source #

Methods

mkChans :: Proxy (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) -> IO (HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))))) Source #

MkCh inToGen => MkChans (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) Source # 
Instance details

Defined in DynamicPipeline.Flow

Associated Types

type HChan (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) Source #

Methods

mkChans :: Proxy (ChansFilter (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) -> IO (HChan (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 # 
Instance details

Defined in DynamicPipeline.Flow

Associated Types

type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))) Source #

Methods

mkChans :: Proxy (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink))) -> IO (HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> (FeedbackChannel toSource :=> Sink)))) Source #

(MkCh inToGen, MkCh genToOut) => MkChans (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink)) Source # 
Instance details

Defined in DynamicPipeline.Flow

Associated Types

type HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink)) Source #

Methods

mkChans :: Proxy (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink)) -> IO (HChan (Source (Channel inToGen) :=> (Generator (Channel genToOut) :=> Sink))) Source #

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

toHList :: HAppendList lr lw => InOutChan lr lw -> HList (HAppendListR lr lw) Source #

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

makeChansF :: forall (a :: Type) flr flw. (MkChans a, HChan a ~ InOutChan flr flw) => IO (InOutChan flr flw) Source #

Warning: INTERNAL USE

getFilterChannels :: InOutChan lr lw -> (HList lr, HList lw) Source #

Warning: INTERNAL USE