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 -- | A top-level context associated with a rate that is a parameter -- of the process. This context isn't created by the process itself. = ContextRate { contextRate :: Type Name , contextOps :: [Operator] , contextInner :: [Context] } -- | A nested context created by a mkSel1# function. | ContextSelect { contextOuterRate :: Type Name , contextInnerRate :: Type Name , contextFlags :: Bound Name , contextSelector :: Bind Name , contextOps :: [Operator] , contextInner :: [Context] } -- | A nested context created by a mkSegd# function. | 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