module Hydra.Dsl.Graph where

import Hydra.Kernel
import Hydra.Dsl.Base as Base

import qualified Data.Map as M


graph :: Datum (M.Map Name Element)
    -> Datum (M.Map Name (Maybe Term))
    -> Datum (M.Map Name Type)
    -> Datum Term
    -> Datum (M.Map Name Primitive)
    -> Datum (Maybe Graph)
    -> Datum Graph
graph :: Datum (Map Name Element)
-> Datum (Map Name (Maybe Term))
-> Datum (Map Name Type)
-> Datum Term
-> Datum (Map Name Primitive)
-> Datum (Maybe Graph)
-> Datum Graph
graph Datum (Map Name Element)
elements Datum (Map Name (Maybe Term))
environment Datum (Map Name Type)
types Datum Term
body Datum (Map Name Primitive)
primitives Datum (Maybe Graph)
schema = Name -> [Field] -> Datum Graph
forall a. Name -> [Field] -> Datum a
record Name
_Graph [
    Name
_Graph_elementsName -> Datum (Map Name Element) -> Field
forall a. Name -> Datum a -> Field
>>: Datum (Map Name Element)
elements,
    Name
_Graph_environmentName -> Datum (Map Name (Maybe Term)) -> Field
forall a. Name -> Datum a -> Field
>>: Datum (Map Name (Maybe Term))
environment,
    Name
_Graph_typesName -> Datum (Map Name Type) -> Field
forall a. Name -> Datum a -> Field
>>: Datum (Map Name Type)
types,
    Name
_Graph_bodyName -> Datum Term -> Field
forall a. Name -> Datum a -> Field
>>: Datum Term
body,
    Name
_Graph_primitivesName -> Datum (Map Name Primitive) -> Field
forall a. Name -> Datum a -> Field
>>: Datum (Map Name Primitive)
primitives,
    Name
_Graph_schemaName -> Datum (Maybe Graph) -> Field
forall a. Name -> Datum a -> Field
>>: Datum (Maybe Graph)
schema]

graphElements :: Datum (Graph -> M.Map Name Element)
graphElements :: Datum (Graph -> Map Name Element)
graphElements = Name -> Name -> Datum (Graph -> Map Name Element)
forall a b. Name -> Name -> Datum (a -> b)
project Name
_Graph Name
_Graph_elements

graphEnvironment :: Datum (Graph -> M.Map Name (Maybe Term))
graphEnvironment :: Datum (Graph -> Map Name (Maybe Term))
graphEnvironment = Name -> Name -> Datum (Graph -> Map Name (Maybe Term))
forall a b. Name -> Name -> Datum (a -> b)
project Name
_Graph Name
_Graph_environment

graphTypes :: Datum (Graph -> M.Map Name Type)
graphTypes :: Datum (Graph -> Map Name Type)
graphTypes = Name -> Name -> Datum (Graph -> Map Name Type)
forall a b. Name -> Name -> Datum (a -> b)
project Name
_Graph Name
_Graph_types

graphBody :: Datum (Graph -> Term)
graphBody :: Datum (Graph -> Term)
graphBody = Name -> Name -> Datum (Graph -> Term)
forall a b. Name -> Name -> Datum (a -> b)
project Name
_Graph Name
_Graph_body

graphPrimitives :: Datum (Graph -> M.Map Name Primitive)
graphPrimitives :: Datum (Graph -> Map Name Primitive)
graphPrimitives = Name -> Name -> Datum (Graph -> Map Name Primitive)
forall a b. Name -> Name -> Datum (a -> b)
project Name
_Graph Name
_Graph_primitives

graphSchema :: Datum (Graph -> Maybe Graph)
graphSchema :: Datum (Graph -> Maybe Graph)
graphSchema = Name -> Name -> Datum (Graph -> Maybe Graph)
forall a b. Name -> Name -> Datum (a -> b)
project Name
_Graph Name
_Graph_schema