module DDC.Core.Flow.Context.Base
(Context (..))
where
import DDC.Type.Exp
import DDC.Core.Flow.Prim
import DDC.Core.Flow.Process.Operator
data Context
= ContextRate
{ contextRate :: Type Name
, contextOps :: [Operator]
, contextInner :: [Context] }
| ContextSelect
{ contextOuterRate :: Type Name
, contextInnerRate :: Type Name
, contextFlags :: Bound Name
, contextSelector :: Bind Name
, contextOps :: [Operator]
, contextInner :: [Context] }
| ContextSegment
{ contextOuterRate :: Type Name
, contextInnerRate :: Type Name
, contextLens :: Bound Name
, contextSegd :: Bind Name
, contextOps :: [Operator]
, contextInner :: [Context] }
| ContextAppend
{ contextRate1 :: Type Name
, contextInner1 :: Context
, contextRate2 :: Type Name
, contextInner2 :: Context }
deriving Show