-- | A set of types which supplement hydra/core with type variants, graphs, and elements

module Hydra.Mantle 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

-- | A disjoint union between a 'left' type and a 'right' type
data Either_ a b = 
  EitherLeft a |
  EitherRight b
  deriving (Either_ a b -> Either_ a b -> Bool
(Either_ a b -> Either_ a b -> Bool)
-> (Either_ a b -> Either_ a b -> Bool) -> Eq (Either_ a b)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall a b. (Eq a, Eq b) => Either_ a b -> Either_ a b -> Bool
$c== :: forall a b. (Eq a, Eq b) => Either_ a b -> Either_ a b -> Bool
== :: Either_ a b -> Either_ a b -> Bool
$c/= :: forall a b. (Eq a, Eq b) => Either_ a b -> Either_ a b -> Bool
/= :: Either_ a b -> Either_ a b -> Bool
Eq, Eq (Either_ a b)
Eq (Either_ a b) =>
(Either_ a b -> Either_ a b -> Ordering)
-> (Either_ a b -> Either_ a b -> Bool)
-> (Either_ a b -> Either_ a b -> Bool)
-> (Either_ a b -> Either_ a b -> Bool)
-> (Either_ a b -> Either_ a b -> Bool)
-> (Either_ a b -> Either_ a b -> Either_ a b)
-> (Either_ a b -> Either_ a b -> Either_ a b)
-> Ord (Either_ a b)
Either_ a b -> Either_ a b -> Bool
Either_ a b -> Either_ a b -> Ordering
Either_ a b -> Either_ a b -> Either_ a b
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall a b. (Ord a, Ord b) => Eq (Either_ a b)
forall a b. (Ord a, Ord b) => Either_ a b -> Either_ a b -> Bool
forall a b.
(Ord a, Ord b) =>
Either_ a b -> Either_ a b -> Ordering
forall a b.
(Ord a, Ord b) =>
Either_ a b -> Either_ a b -> Either_ a b
$ccompare :: forall a b.
(Ord a, Ord b) =>
Either_ a b -> Either_ a b -> Ordering
compare :: Either_ a b -> Either_ a b -> Ordering
$c< :: forall a b. (Ord a, Ord b) => Either_ a b -> Either_ a b -> Bool
< :: Either_ a b -> Either_ a b -> Bool
$c<= :: forall a b. (Ord a, Ord b) => Either_ a b -> Either_ a b -> Bool
<= :: Either_ a b -> Either_ a b -> Bool
$c> :: forall a b. (Ord a, Ord b) => Either_ a b -> Either_ a b -> Bool
> :: Either_ a b -> Either_ a b -> Bool
$c>= :: forall a b. (Ord a, Ord b) => Either_ a b -> Either_ a b -> Bool
>= :: Either_ a b -> Either_ a b -> Bool
$cmax :: forall a b.
(Ord a, Ord b) =>
Either_ a b -> Either_ a b -> Either_ a b
max :: Either_ a b -> Either_ a b -> Either_ a b
$cmin :: forall a b.
(Ord a, Ord b) =>
Either_ a b -> Either_ a b -> Either_ a b
min :: Either_ a b -> Either_ a b -> Either_ a b
Ord, ReadPrec [Either_ a b]
ReadPrec (Either_ a b)
Int -> ReadS (Either_ a b)
ReadS [Either_ a b]
(Int -> ReadS (Either_ a b))
-> ReadS [Either_ a b]
-> ReadPrec (Either_ a b)
-> ReadPrec [Either_ a b]
-> Read (Either_ a b)
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
forall a b. (Read a, Read b) => ReadPrec [Either_ a b]
forall a b. (Read a, Read b) => ReadPrec (Either_ a b)
forall a b. (Read a, Read b) => Int -> ReadS (Either_ a b)
forall a b. (Read a, Read b) => ReadS [Either_ a b]
$creadsPrec :: forall a b. (Read a, Read b) => Int -> ReadS (Either_ a b)
readsPrec :: Int -> ReadS (Either_ a b)
$creadList :: forall a b. (Read a, Read b) => ReadS [Either_ a b]
readList :: ReadS [Either_ a b]
$creadPrec :: forall a b. (Read a, Read b) => ReadPrec (Either_ a b)
readPrec :: ReadPrec (Either_ a b)
$creadListPrec :: forall a b. (Read a, Read b) => ReadPrec [Either_ a b]
readListPrec :: ReadPrec [Either_ a b]
Read, Int -> Either_ a b -> ShowS
[Either_ a b] -> ShowS
Either_ a b -> String
(Int -> Either_ a b -> ShowS)
-> (Either_ a b -> String)
-> ([Either_ a b] -> ShowS)
-> Show (Either_ a b)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall a b. (Show a, Show b) => Int -> Either_ a b -> ShowS
forall a b. (Show a, Show b) => [Either_ a b] -> ShowS
forall a b. (Show a, Show b) => Either_ a b -> String
$cshowsPrec :: forall a b. (Show a, Show b) => Int -> Either_ a b -> ShowS
showsPrec :: Int -> Either_ a b -> ShowS
$cshow :: forall a b. (Show a, Show b) => Either_ a b -> String
show :: Either_ a b -> String
$cshowList :: forall a b. (Show a, Show b) => [Either_ a b] -> ShowS
showList :: [Either_ a b] -> ShowS
Show)

_Either :: Name
_Either = (String -> Name
Core.Name String
"hydra/mantle.Either")

_Either_left :: Name
_Either_left = (String -> Name
Core.Name String
"left")

_Either_right :: Name
_Either_right = (String -> Name
Core.Name String
"right")

-- | The identifier of an elimination constructor
data EliminationVariant = 
  EliminationVariantList  |
  EliminationVariantOptional  |
  EliminationVariantProduct  |
  EliminationVariantRecord  |
  EliminationVariantUnion  |
  EliminationVariantWrap 
  deriving (EliminationVariant -> EliminationVariant -> Bool
(EliminationVariant -> EliminationVariant -> Bool)
-> (EliminationVariant -> EliminationVariant -> Bool)
-> Eq EliminationVariant
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: EliminationVariant -> EliminationVariant -> Bool
== :: EliminationVariant -> EliminationVariant -> Bool
$c/= :: EliminationVariant -> EliminationVariant -> Bool
/= :: EliminationVariant -> EliminationVariant -> Bool
Eq, Eq EliminationVariant
Eq EliminationVariant =>
(EliminationVariant -> EliminationVariant -> Ordering)
-> (EliminationVariant -> EliminationVariant -> Bool)
-> (EliminationVariant -> EliminationVariant -> Bool)
-> (EliminationVariant -> EliminationVariant -> Bool)
-> (EliminationVariant -> EliminationVariant -> Bool)
-> (EliminationVariant -> EliminationVariant -> EliminationVariant)
-> (EliminationVariant -> EliminationVariant -> EliminationVariant)
-> Ord EliminationVariant
EliminationVariant -> EliminationVariant -> Bool
EliminationVariant -> EliminationVariant -> Ordering
EliminationVariant -> EliminationVariant -> EliminationVariant
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: EliminationVariant -> EliminationVariant -> Ordering
compare :: EliminationVariant -> EliminationVariant -> Ordering
$c< :: EliminationVariant -> EliminationVariant -> Bool
< :: EliminationVariant -> EliminationVariant -> Bool
$c<= :: EliminationVariant -> EliminationVariant -> Bool
<= :: EliminationVariant -> EliminationVariant -> Bool
$c> :: EliminationVariant -> EliminationVariant -> Bool
> :: EliminationVariant -> EliminationVariant -> Bool
$c>= :: EliminationVariant -> EliminationVariant -> Bool
>= :: EliminationVariant -> EliminationVariant -> Bool
$cmax :: EliminationVariant -> EliminationVariant -> EliminationVariant
max :: EliminationVariant -> EliminationVariant -> EliminationVariant
$cmin :: EliminationVariant -> EliminationVariant -> EliminationVariant
min :: EliminationVariant -> EliminationVariant -> EliminationVariant
Ord, ReadPrec [EliminationVariant]
ReadPrec EliminationVariant
Int -> ReadS EliminationVariant
ReadS [EliminationVariant]
(Int -> ReadS EliminationVariant)
-> ReadS [EliminationVariant]
-> ReadPrec EliminationVariant
-> ReadPrec [EliminationVariant]
-> Read EliminationVariant
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS EliminationVariant
readsPrec :: Int -> ReadS EliminationVariant
$creadList :: ReadS [EliminationVariant]
readList :: ReadS [EliminationVariant]
$creadPrec :: ReadPrec EliminationVariant
readPrec :: ReadPrec EliminationVariant
$creadListPrec :: ReadPrec [EliminationVariant]
readListPrec :: ReadPrec [EliminationVariant]
Read, Int -> EliminationVariant -> ShowS
[EliminationVariant] -> ShowS
EliminationVariant -> String
(Int -> EliminationVariant -> ShowS)
-> (EliminationVariant -> String)
-> ([EliminationVariant] -> ShowS)
-> Show EliminationVariant
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> EliminationVariant -> ShowS
showsPrec :: Int -> EliminationVariant -> ShowS
$cshow :: EliminationVariant -> String
show :: EliminationVariant -> String
$cshowList :: [EliminationVariant] -> ShowS
showList :: [EliminationVariant] -> ShowS
Show)

_EliminationVariant :: Name
_EliminationVariant = (String -> Name
Core.Name String
"hydra/mantle.EliminationVariant")

_EliminationVariant_list :: Name
_EliminationVariant_list = (String -> Name
Core.Name String
"list")

_EliminationVariant_optional :: Name
_EliminationVariant_optional = (String -> Name
Core.Name String
"optional")

_EliminationVariant_product :: Name
_EliminationVariant_product = (String -> Name
Core.Name String
"product")

_EliminationVariant_record :: Name
_EliminationVariant_record = (String -> Name
Core.Name String
"record")

_EliminationVariant_union :: Name
_EliminationVariant_union = (String -> Name
Core.Name String
"union")

_EliminationVariant_wrap :: Name
_EliminationVariant_wrap = (String -> Name
Core.Name String
"wrap")

-- | The identifier of a function constructor
data FunctionVariant = 
  FunctionVariantElimination  |
  FunctionVariantLambda  |
  FunctionVariantPrimitive 
  deriving (FunctionVariant -> FunctionVariant -> Bool
(FunctionVariant -> FunctionVariant -> Bool)
-> (FunctionVariant -> FunctionVariant -> Bool)
-> Eq FunctionVariant
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: FunctionVariant -> FunctionVariant -> Bool
== :: FunctionVariant -> FunctionVariant -> Bool
$c/= :: FunctionVariant -> FunctionVariant -> Bool
/= :: FunctionVariant -> FunctionVariant -> Bool
Eq, Eq FunctionVariant
Eq FunctionVariant =>
(FunctionVariant -> FunctionVariant -> Ordering)
-> (FunctionVariant -> FunctionVariant -> Bool)
-> (FunctionVariant -> FunctionVariant -> Bool)
-> (FunctionVariant -> FunctionVariant -> Bool)
-> (FunctionVariant -> FunctionVariant -> Bool)
-> (FunctionVariant -> FunctionVariant -> FunctionVariant)
-> (FunctionVariant -> FunctionVariant -> FunctionVariant)
-> Ord FunctionVariant
FunctionVariant -> FunctionVariant -> Bool
FunctionVariant -> FunctionVariant -> Ordering
FunctionVariant -> FunctionVariant -> FunctionVariant
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: FunctionVariant -> FunctionVariant -> Ordering
compare :: FunctionVariant -> FunctionVariant -> Ordering
$c< :: FunctionVariant -> FunctionVariant -> Bool
< :: FunctionVariant -> FunctionVariant -> Bool
$c<= :: FunctionVariant -> FunctionVariant -> Bool
<= :: FunctionVariant -> FunctionVariant -> Bool
$c> :: FunctionVariant -> FunctionVariant -> Bool
> :: FunctionVariant -> FunctionVariant -> Bool
$c>= :: FunctionVariant -> FunctionVariant -> Bool
>= :: FunctionVariant -> FunctionVariant -> Bool
$cmax :: FunctionVariant -> FunctionVariant -> FunctionVariant
max :: FunctionVariant -> FunctionVariant -> FunctionVariant
$cmin :: FunctionVariant -> FunctionVariant -> FunctionVariant
min :: FunctionVariant -> FunctionVariant -> FunctionVariant
Ord, ReadPrec [FunctionVariant]
ReadPrec FunctionVariant
Int -> ReadS FunctionVariant
ReadS [FunctionVariant]
(Int -> ReadS FunctionVariant)
-> ReadS [FunctionVariant]
-> ReadPrec FunctionVariant
-> ReadPrec [FunctionVariant]
-> Read FunctionVariant
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS FunctionVariant
readsPrec :: Int -> ReadS FunctionVariant
$creadList :: ReadS [FunctionVariant]
readList :: ReadS [FunctionVariant]
$creadPrec :: ReadPrec FunctionVariant
readPrec :: ReadPrec FunctionVariant
$creadListPrec :: ReadPrec [FunctionVariant]
readListPrec :: ReadPrec [FunctionVariant]
Read, Int -> FunctionVariant -> ShowS
[FunctionVariant] -> ShowS
FunctionVariant -> String
(Int -> FunctionVariant -> ShowS)
-> (FunctionVariant -> String)
-> ([FunctionVariant] -> ShowS)
-> Show FunctionVariant
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> FunctionVariant -> ShowS
showsPrec :: Int -> FunctionVariant -> ShowS
$cshow :: FunctionVariant -> String
show :: FunctionVariant -> String
$cshowList :: [FunctionVariant] -> ShowS
showList :: [FunctionVariant] -> ShowS
Show)

_FunctionVariant :: Name
_FunctionVariant = (String -> Name
Core.Name String
"hydra/mantle.FunctionVariant")

_FunctionVariant_elimination :: Name
_FunctionVariant_elimination = (String -> Name
Core.Name String
"elimination")

_FunctionVariant_lambda :: Name
_FunctionVariant_lambda = (String -> Name
Core.Name String
"lambda")

_FunctionVariant_primitive :: Name
_FunctionVariant_primitive = (String -> Name
Core.Name String
"primitive")

-- | The identifier of a literal constructor
data LiteralVariant = 
  LiteralVariantBinary  |
  LiteralVariantBoolean  |
  LiteralVariantFloat  |
  LiteralVariantInteger  |
  LiteralVariantString 
  deriving (LiteralVariant -> LiteralVariant -> Bool
(LiteralVariant -> LiteralVariant -> Bool)
-> (LiteralVariant -> LiteralVariant -> Bool) -> Eq LiteralVariant
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: LiteralVariant -> LiteralVariant -> Bool
== :: LiteralVariant -> LiteralVariant -> Bool
$c/= :: LiteralVariant -> LiteralVariant -> Bool
/= :: LiteralVariant -> LiteralVariant -> Bool
Eq, Eq LiteralVariant
Eq LiteralVariant =>
(LiteralVariant -> LiteralVariant -> Ordering)
-> (LiteralVariant -> LiteralVariant -> Bool)
-> (LiteralVariant -> LiteralVariant -> Bool)
-> (LiteralVariant -> LiteralVariant -> Bool)
-> (LiteralVariant -> LiteralVariant -> Bool)
-> (LiteralVariant -> LiteralVariant -> LiteralVariant)
-> (LiteralVariant -> LiteralVariant -> LiteralVariant)
-> Ord LiteralVariant
LiteralVariant -> LiteralVariant -> Bool
LiteralVariant -> LiteralVariant -> Ordering
LiteralVariant -> LiteralVariant -> LiteralVariant
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: LiteralVariant -> LiteralVariant -> Ordering
compare :: LiteralVariant -> LiteralVariant -> Ordering
$c< :: LiteralVariant -> LiteralVariant -> Bool
< :: LiteralVariant -> LiteralVariant -> Bool
$c<= :: LiteralVariant -> LiteralVariant -> Bool
<= :: LiteralVariant -> LiteralVariant -> Bool
$c> :: LiteralVariant -> LiteralVariant -> Bool
> :: LiteralVariant -> LiteralVariant -> Bool
$c>= :: LiteralVariant -> LiteralVariant -> Bool
>= :: LiteralVariant -> LiteralVariant -> Bool
$cmax :: LiteralVariant -> LiteralVariant -> LiteralVariant
max :: LiteralVariant -> LiteralVariant -> LiteralVariant
$cmin :: LiteralVariant -> LiteralVariant -> LiteralVariant
min :: LiteralVariant -> LiteralVariant -> LiteralVariant
Ord, ReadPrec [LiteralVariant]
ReadPrec LiteralVariant
Int -> ReadS LiteralVariant
ReadS [LiteralVariant]
(Int -> ReadS LiteralVariant)
-> ReadS [LiteralVariant]
-> ReadPrec LiteralVariant
-> ReadPrec [LiteralVariant]
-> Read LiteralVariant
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS LiteralVariant
readsPrec :: Int -> ReadS LiteralVariant
$creadList :: ReadS [LiteralVariant]
readList :: ReadS [LiteralVariant]
$creadPrec :: ReadPrec LiteralVariant
readPrec :: ReadPrec LiteralVariant
$creadListPrec :: ReadPrec [LiteralVariant]
readListPrec :: ReadPrec [LiteralVariant]
Read, Int -> LiteralVariant -> ShowS
[LiteralVariant] -> ShowS
LiteralVariant -> String
(Int -> LiteralVariant -> ShowS)
-> (LiteralVariant -> String)
-> ([LiteralVariant] -> ShowS)
-> Show LiteralVariant
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> LiteralVariant -> ShowS
showsPrec :: Int -> LiteralVariant -> ShowS
$cshow :: LiteralVariant -> String
show :: LiteralVariant -> String
$cshowList :: [LiteralVariant] -> ShowS
showList :: [LiteralVariant] -> ShowS
Show)

_LiteralVariant :: Name
_LiteralVariant = (String -> Name
Core.Name String
"hydra/mantle.LiteralVariant")

_LiteralVariant_binary :: Name
_LiteralVariant_binary = (String -> Name
Core.Name String
"binary")

_LiteralVariant_boolean :: Name
_LiteralVariant_boolean = (String -> Name
Core.Name String
"boolean")

_LiteralVariant_float :: Name
_LiteralVariant_float = (String -> Name
Core.Name String
"float")

_LiteralVariant_integer :: Name
_LiteralVariant_integer = (String -> Name
Core.Name String
"integer")

_LiteralVariant_string :: Name
_LiteralVariant_string = (String -> Name
Core.Name String
"string")

-- | Numeric precision: arbitrary precision, or precision to a specified number of bits
data Precision = 
  PrecisionArbitrary  |
  PrecisionBits Int
  deriving (Precision -> Precision -> Bool
(Precision -> Precision -> Bool)
-> (Precision -> Precision -> Bool) -> Eq Precision
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Precision -> Precision -> Bool
== :: Precision -> Precision -> Bool
$c/= :: Precision -> Precision -> Bool
/= :: Precision -> Precision -> Bool
Eq, Eq Precision
Eq Precision =>
(Precision -> Precision -> Ordering)
-> (Precision -> Precision -> Bool)
-> (Precision -> Precision -> Bool)
-> (Precision -> Precision -> Bool)
-> (Precision -> Precision -> Bool)
-> (Precision -> Precision -> Precision)
-> (Precision -> Precision -> Precision)
-> Ord Precision
Precision -> Precision -> Bool
Precision -> Precision -> Ordering
Precision -> Precision -> Precision
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: Precision -> Precision -> Ordering
compare :: Precision -> Precision -> Ordering
$c< :: Precision -> Precision -> Bool
< :: Precision -> Precision -> Bool
$c<= :: Precision -> Precision -> Bool
<= :: Precision -> Precision -> Bool
$c> :: Precision -> Precision -> Bool
> :: Precision -> Precision -> Bool
$c>= :: Precision -> Precision -> Bool
>= :: Precision -> Precision -> Bool
$cmax :: Precision -> Precision -> Precision
max :: Precision -> Precision -> Precision
$cmin :: Precision -> Precision -> Precision
min :: Precision -> Precision -> Precision
Ord, ReadPrec [Precision]
ReadPrec Precision
Int -> ReadS Precision
ReadS [Precision]
(Int -> ReadS Precision)
-> ReadS [Precision]
-> ReadPrec Precision
-> ReadPrec [Precision]
-> Read Precision
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS Precision
readsPrec :: Int -> ReadS Precision
$creadList :: ReadS [Precision]
readList :: ReadS [Precision]
$creadPrec :: ReadPrec Precision
readPrec :: ReadPrec Precision
$creadListPrec :: ReadPrec [Precision]
readListPrec :: ReadPrec [Precision]
Read, Int -> Precision -> ShowS
[Precision] -> ShowS
Precision -> String
(Int -> Precision -> ShowS)
-> (Precision -> String)
-> ([Precision] -> ShowS)
-> Show Precision
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Precision -> ShowS
showsPrec :: Int -> Precision -> ShowS
$cshow :: Precision -> String
show :: Precision -> String
$cshowList :: [Precision] -> ShowS
showList :: [Precision] -> ShowS
Show)

_Precision :: Name
_Precision = (String -> Name
Core.Name String
"hydra/mantle.Precision")

_Precision_arbitrary :: Name
_Precision_arbitrary = (String -> Name
Core.Name String
"arbitrary")

_Precision_bits :: Name
_Precision_bits = (String -> Name
Core.Name String
"bits")

-- | The identifier of a term expression constructor
data TermVariant = 
  TermVariantAnnotated  |
  TermVariantApplication  |
  TermVariantFunction  |
  TermVariantLet  |
  TermVariantList  |
  TermVariantLiteral  |
  TermVariantMap  |
  TermVariantOptional  |
  TermVariantProduct  |
  TermVariantRecord  |
  TermVariantSet  |
  TermVariantSum  |
  TermVariantTyped  |
  TermVariantUnion  |
  TermVariantVariable  |
  TermVariantWrap 
  deriving (TermVariant -> TermVariant -> Bool
(TermVariant -> TermVariant -> Bool)
-> (TermVariant -> TermVariant -> Bool) -> Eq TermVariant
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TermVariant -> TermVariant -> Bool
== :: TermVariant -> TermVariant -> Bool
$c/= :: TermVariant -> TermVariant -> Bool
/= :: TermVariant -> TermVariant -> Bool
Eq, Eq TermVariant
Eq TermVariant =>
(TermVariant -> TermVariant -> Ordering)
-> (TermVariant -> TermVariant -> Bool)
-> (TermVariant -> TermVariant -> Bool)
-> (TermVariant -> TermVariant -> Bool)
-> (TermVariant -> TermVariant -> Bool)
-> (TermVariant -> TermVariant -> TermVariant)
-> (TermVariant -> TermVariant -> TermVariant)
-> Ord TermVariant
TermVariant -> TermVariant -> Bool
TermVariant -> TermVariant -> Ordering
TermVariant -> TermVariant -> TermVariant
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: TermVariant -> TermVariant -> Ordering
compare :: TermVariant -> TermVariant -> Ordering
$c< :: TermVariant -> TermVariant -> Bool
< :: TermVariant -> TermVariant -> Bool
$c<= :: TermVariant -> TermVariant -> Bool
<= :: TermVariant -> TermVariant -> Bool
$c> :: TermVariant -> TermVariant -> Bool
> :: TermVariant -> TermVariant -> Bool
$c>= :: TermVariant -> TermVariant -> Bool
>= :: TermVariant -> TermVariant -> Bool
$cmax :: TermVariant -> TermVariant -> TermVariant
max :: TermVariant -> TermVariant -> TermVariant
$cmin :: TermVariant -> TermVariant -> TermVariant
min :: TermVariant -> TermVariant -> TermVariant
Ord, ReadPrec [TermVariant]
ReadPrec TermVariant
Int -> ReadS TermVariant
ReadS [TermVariant]
(Int -> ReadS TermVariant)
-> ReadS [TermVariant]
-> ReadPrec TermVariant
-> ReadPrec [TermVariant]
-> Read TermVariant
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS TermVariant
readsPrec :: Int -> ReadS TermVariant
$creadList :: ReadS [TermVariant]
readList :: ReadS [TermVariant]
$creadPrec :: ReadPrec TermVariant
readPrec :: ReadPrec TermVariant
$creadListPrec :: ReadPrec [TermVariant]
readListPrec :: ReadPrec [TermVariant]
Read, Int -> TermVariant -> ShowS
[TermVariant] -> ShowS
TermVariant -> String
(Int -> TermVariant -> ShowS)
-> (TermVariant -> String)
-> ([TermVariant] -> ShowS)
-> Show TermVariant
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TermVariant -> ShowS
showsPrec :: Int -> TermVariant -> ShowS
$cshow :: TermVariant -> String
show :: TermVariant -> String
$cshowList :: [TermVariant] -> ShowS
showList :: [TermVariant] -> ShowS
Show)

_TermVariant :: Name
_TermVariant = (String -> Name
Core.Name String
"hydra/mantle.TermVariant")

_TermVariant_annotated :: Name
_TermVariant_annotated = (String -> Name
Core.Name String
"annotated")

_TermVariant_application :: Name
_TermVariant_application = (String -> Name
Core.Name String
"application")

_TermVariant_function :: Name
_TermVariant_function = (String -> Name
Core.Name String
"function")

_TermVariant_let :: Name
_TermVariant_let = (String -> Name
Core.Name String
"let")

_TermVariant_list :: Name
_TermVariant_list = (String -> Name
Core.Name String
"list")

_TermVariant_literal :: Name
_TermVariant_literal = (String -> Name
Core.Name String
"literal")

_TermVariant_map :: Name
_TermVariant_map = (String -> Name
Core.Name String
"map")

_TermVariant_optional :: Name
_TermVariant_optional = (String -> Name
Core.Name String
"optional")

_TermVariant_product :: Name
_TermVariant_product = (String -> Name
Core.Name String
"product")

_TermVariant_record :: Name
_TermVariant_record = (String -> Name
Core.Name String
"record")

_TermVariant_set :: Name
_TermVariant_set = (String -> Name
Core.Name String
"set")

_TermVariant_sum :: Name
_TermVariant_sum = (String -> Name
Core.Name String
"sum")

_TermVariant_typed :: Name
_TermVariant_typed = (String -> Name
Core.Name String
"typed")

_TermVariant_union :: Name
_TermVariant_union = (String -> Name
Core.Name String
"union")

_TermVariant_variable :: Name
_TermVariant_variable = (String -> Name
Core.Name String
"variable")

_TermVariant_wrap :: Name
_TermVariant_wrap = (String -> Name
Core.Name String
"wrap")

-- | The identifier of a type constructor
data TypeVariant = 
  TypeVariantAnnotated  |
  TypeVariantApplication  |
  TypeVariantFunction  |
  TypeVariantLambda  |
  TypeVariantList  |
  TypeVariantLiteral  |
  TypeVariantMap  |
  TypeVariantOptional  |
  TypeVariantProduct  |
  TypeVariantRecord  |
  TypeVariantSet  |
  TypeVariantSum  |
  TypeVariantUnion  |
  TypeVariantVariable  |
  TypeVariantWrap 
  deriving (TypeVariant -> TypeVariant -> Bool
(TypeVariant -> TypeVariant -> Bool)
-> (TypeVariant -> TypeVariant -> Bool) -> Eq TypeVariant
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TypeVariant -> TypeVariant -> Bool
== :: TypeVariant -> TypeVariant -> Bool
$c/= :: TypeVariant -> TypeVariant -> Bool
/= :: TypeVariant -> TypeVariant -> Bool
Eq, Eq TypeVariant
Eq TypeVariant =>
(TypeVariant -> TypeVariant -> Ordering)
-> (TypeVariant -> TypeVariant -> Bool)
-> (TypeVariant -> TypeVariant -> Bool)
-> (TypeVariant -> TypeVariant -> Bool)
-> (TypeVariant -> TypeVariant -> Bool)
-> (TypeVariant -> TypeVariant -> TypeVariant)
-> (TypeVariant -> TypeVariant -> TypeVariant)
-> Ord TypeVariant
TypeVariant -> TypeVariant -> Bool
TypeVariant -> TypeVariant -> Ordering
TypeVariant -> TypeVariant -> TypeVariant
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: TypeVariant -> TypeVariant -> Ordering
compare :: TypeVariant -> TypeVariant -> Ordering
$c< :: TypeVariant -> TypeVariant -> Bool
< :: TypeVariant -> TypeVariant -> Bool
$c<= :: TypeVariant -> TypeVariant -> Bool
<= :: TypeVariant -> TypeVariant -> Bool
$c> :: TypeVariant -> TypeVariant -> Bool
> :: TypeVariant -> TypeVariant -> Bool
$c>= :: TypeVariant -> TypeVariant -> Bool
>= :: TypeVariant -> TypeVariant -> Bool
$cmax :: TypeVariant -> TypeVariant -> TypeVariant
max :: TypeVariant -> TypeVariant -> TypeVariant
$cmin :: TypeVariant -> TypeVariant -> TypeVariant
min :: TypeVariant -> TypeVariant -> TypeVariant
Ord, ReadPrec [TypeVariant]
ReadPrec TypeVariant
Int -> ReadS TypeVariant
ReadS [TypeVariant]
(Int -> ReadS TypeVariant)
-> ReadS [TypeVariant]
-> ReadPrec TypeVariant
-> ReadPrec [TypeVariant]
-> Read TypeVariant
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS TypeVariant
readsPrec :: Int -> ReadS TypeVariant
$creadList :: ReadS [TypeVariant]
readList :: ReadS [TypeVariant]
$creadPrec :: ReadPrec TypeVariant
readPrec :: ReadPrec TypeVariant
$creadListPrec :: ReadPrec [TypeVariant]
readListPrec :: ReadPrec [TypeVariant]
Read, Int -> TypeVariant -> ShowS
[TypeVariant] -> ShowS
TypeVariant -> String
(Int -> TypeVariant -> ShowS)
-> (TypeVariant -> String)
-> ([TypeVariant] -> ShowS)
-> Show TypeVariant
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TypeVariant -> ShowS
showsPrec :: Int -> TypeVariant -> ShowS
$cshow :: TypeVariant -> String
show :: TypeVariant -> String
$cshowList :: [TypeVariant] -> ShowS
showList :: [TypeVariant] -> ShowS
Show)

_TypeVariant :: Name
_TypeVariant = (String -> Name
Core.Name String
"hydra/mantle.TypeVariant")

_TypeVariant_annotated :: Name
_TypeVariant_annotated = (String -> Name
Core.Name String
"annotated")

_TypeVariant_application :: Name
_TypeVariant_application = (String -> Name
Core.Name String
"application")

_TypeVariant_function :: Name
_TypeVariant_function = (String -> Name
Core.Name String
"function")

_TypeVariant_lambda :: Name
_TypeVariant_lambda = (String -> Name
Core.Name String
"lambda")

_TypeVariant_list :: Name
_TypeVariant_list = (String -> Name
Core.Name String
"list")

_TypeVariant_literal :: Name
_TypeVariant_literal = (String -> Name
Core.Name String
"literal")

_TypeVariant_map :: Name
_TypeVariant_map = (String -> Name
Core.Name String
"map")

_TypeVariant_optional :: Name
_TypeVariant_optional = (String -> Name
Core.Name String
"optional")

_TypeVariant_product :: Name
_TypeVariant_product = (String -> Name
Core.Name String
"product")

_TypeVariant_record :: Name
_TypeVariant_record = (String -> Name
Core.Name String
"record")

_TypeVariant_set :: Name
_TypeVariant_set = (String -> Name
Core.Name String
"set")

_TypeVariant_sum :: Name
_TypeVariant_sum = (String -> Name
Core.Name String
"sum")

_TypeVariant_union :: Name
_TypeVariant_union = (String -> Name
Core.Name String
"union")

_TypeVariant_variable :: Name
_TypeVariant_variable = (String -> Name
Core.Name String
"variable")

_TypeVariant_wrap :: Name
_TypeVariant_wrap = (String -> Name
Core.Name String
"wrap")