hydra-0.8.0: src/main/haskell/Hydra/Dsl/Graph.hs
module Hydra.Dsl.Graph where
import Hydra.Kernel
import Hydra.Dsl.Base as Base
import qualified Data.Map as M
elementName :: TTerm (Element -> Name)
elementName = project _Element _Element_name
graph :: TTerm (M.Map Name Element)
-> TTerm (M.Map Name (Maybe Term))
-> TTerm (M.Map Name TypeScheme)
-> TTerm Term
-> TTerm (M.Map Name Primitive)
-> TTerm (Maybe Graph)
-> TTerm Graph
graph elements environment types body primitives schema = record _Graph [
_Graph_elements>>: elements,
_Graph_environment>>: environment,
_Graph_types>>: types,
_Graph_body>>: body,
_Graph_primitives>>: primitives,
_Graph_schema>>: schema]
graphElements :: TTerm (Graph -> M.Map Name Element)
graphElements = project _Graph _Graph_elements
graphEnvironment :: TTerm (Graph -> M.Map Name (Maybe Term))
graphEnvironment = project _Graph _Graph_environment
graphTypes :: TTerm (Graph -> M.Map Name TypeScheme)
graphTypes = project _Graph _Graph_types
graphBody :: TTerm (Graph -> Term)
graphBody = project _Graph _Graph_body
graphPrimitives :: TTerm (Graph -> M.Map Name Primitive)
graphPrimitives = project _Graph _Graph_primitives
graphSchema :: TTerm (Graph -> Maybe Graph)
graphSchema = project _Graph _Graph_schema
primitiveName :: TTerm (Primitive -> Name)
primitiveName = project _Primitive _Primitive_name
primitiveType :: TTerm (Primitive -> TypeScheme)
primitiveType = project _Primitive _Primitive_type
primitiveImplementation :: TTerm (Primitive -> ([Term] -> Flow Graph Term))
primitiveImplementation = project _Primitive _Primitive_type