packages feed

hydra-0.5.0: src/gen-main/haskell/Hydra/Phantoms.hs

-- | Phantom types for use in model definitions

module Hydra.Phantoms where

import qualified Hydra.Core as Core
import Data.Int
import Data.List as L
import Data.Map as M
import Data.Set as S

-- | An association of a field name (as in a case statement) with a phantom type
newtype Case a = 
  Case {
    unCase :: Core.Name}
  deriving (Eq, Ord, Read, Show)

_Case = (Core.Name "hydra/phantoms.Case")

-- | An association of a term with a phantom type
newtype Datum a = 
  Datum {
    unDatum :: Core.Term}
  deriving (Eq, Ord, Read, Show)

_Datum = (Core.Name "hydra/phantoms.Datum")

-- | An association with a named term with a phantom type
data Definition a = 
  Definition {
    definitionName :: Core.Name,
    definitionDatum :: (Datum a)}
  deriving (Eq, Ord, Read, Show)

_Definition = (Core.Name "hydra/phantoms.Definition")

_Definition_name = (Core.Name "name")

_Definition_datum = (Core.Name "datum")

-- | An association with a term-level field with a phantom type
newtype Fld a = 
  Fld {
    unFld :: Core.Field}
  deriving (Eq, Ord, Read, Show)

_Fld = (Core.Name "hydra/phantoms.Fld")

-- | A pure association with a phantom type
data Reference a = 
  Reference {}
  deriving (Eq, Ord, Read, Show)

_Reference = (Core.Name "hydra/phantoms.Reference")