-- |

--

-- * For the most part, tokens are constructed during parsing

--

--     * exception example: an instrumented call to __nondet__, which involves creating a 'VarName'

--

-- * Each token kind ( 'VarName', 'ParamName' etc. ) corresponds to its own Haskell type

--

--     * this means that ( for example ) 'VarName' and 'ParamName' are /not/ interchangeable

--

-- * Sometimes, a /unified view/ is needed for named tokens

--

--     * for instance, inside the symbol table

--     * in these cases, use the included 'Named' portion of the type

--     * getter functions below help to easily extract it

--     * the abstract syntax tree does /not/ contain "naked" 'Named' tokens

--


{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE OverloadedStrings #-}

module Token

where

-- project imports

import Location

-- general imports

import Data.Aeson
import GHC.Generics

-- |

--

-- * Raw data that is wrapped and included by the different tokens

--

-- * Aimed to facilitate a unified view of named tokens

--

-- * Is /not/ a part of the abstract syntax tree

--

data Named
   = Named
   {
       Named -> String
content :: String,
       Named -> Location
location :: Location
   }
   deriving ( Int -> Named -> ShowS
[Named] -> ShowS
Named -> String
(Int -> Named -> ShowS)
-> (Named -> String) -> ([Named] -> ShowS) -> Show Named
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Named -> ShowS
showsPrec :: Int -> Named -> ShowS
$cshow :: Named -> String
show :: Named -> String
$cshowList :: [Named] -> ShowS
showList :: [Named] -> ShowS
Show, Named -> Named -> Bool
(Named -> Named -> Bool) -> (Named -> Named -> Bool) -> Eq Named
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Named -> Named -> Bool
== :: Named -> Named -> Bool
$c/= :: Named -> Named -> Bool
/= :: Named -> Named -> Bool
Eq, (forall x. Named -> Rep Named x)
-> (forall x. Rep Named x -> Named) -> Generic Named
forall x. Rep Named x -> Named
forall x. Named -> Rep Named x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. Named -> Rep Named x
from :: forall x. Named -> Rep Named x
$cto :: forall x. Rep Named x -> Named
to :: forall x. Rep Named x -> Named
Generic, [Named] -> Value
[Named] -> Encoding
Named -> Bool
Named -> Value
Named -> Encoding
(Named -> Value)
-> (Named -> Encoding)
-> ([Named] -> Value)
-> ([Named] -> Encoding)
-> (Named -> Bool)
-> ToJSON Named
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: Named -> Value
toJSON :: Named -> Value
$ctoEncoding :: Named -> Encoding
toEncoding :: Named -> Encoding
$ctoJSONList :: [Named] -> Value
toJSONList :: [Named] -> Value
$ctoEncodingList :: [Named] -> Encoding
toEncodingList :: [Named] -> Encoding
$comitField :: Named -> Bool
omitField :: Named -> Bool
ToJSON, Maybe Named
Value -> Parser [Named]
Value -> Parser Named
(Value -> Parser Named)
-> (Value -> Parser [Named]) -> Maybe Named -> FromJSON Named
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser Named
parseJSON :: Value -> Parser Named
$cparseJSONList :: Value -> Parser [Named]
parseJSONList :: Value -> Parser [Named]
$comittedField :: Maybe Named
omittedField :: Maybe Named
FromJSON, Eq Named
Eq Named
-> (Named -> Named -> Ordering)
-> (Named -> Named -> Bool)
-> (Named -> Named -> Bool)
-> (Named -> Named -> Bool)
-> (Named -> Named -> Bool)
-> (Named -> Named -> Named)
-> (Named -> Named -> Named)
-> Ord Named
Named -> Named -> Bool
Named -> Named -> Ordering
Named -> Named -> Named
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 :: Named -> Named -> Ordering
compare :: Named -> Named -> Ordering
$c< :: Named -> Named -> Bool
< :: Named -> Named -> Bool
$c<= :: Named -> Named -> Bool
<= :: Named -> Named -> Bool
$c> :: Named -> Named -> Bool
> :: Named -> Named -> Bool
$c>= :: Named -> Named -> Bool
>= :: Named -> Named -> Bool
$cmax :: Named -> Named -> Named
max :: Named -> Named -> Named
$cmin :: Named -> Named -> Named
min :: Named -> Named -> Named
Ord )
   
data VarName   = VarName   Named deriving ( Int -> VarName -> ShowS
[VarName] -> ShowS
VarName -> String
(Int -> VarName -> ShowS)
-> (VarName -> String) -> ([VarName] -> ShowS) -> Show VarName
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> VarName -> ShowS
showsPrec :: Int -> VarName -> ShowS
$cshow :: VarName -> String
show :: VarName -> String
$cshowList :: [VarName] -> ShowS
showList :: [VarName] -> ShowS
Show, VarName -> VarName -> Bool
(VarName -> VarName -> Bool)
-> (VarName -> VarName -> Bool) -> Eq VarName
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: VarName -> VarName -> Bool
== :: VarName -> VarName -> Bool
$c/= :: VarName -> VarName -> Bool
/= :: VarName -> VarName -> Bool
Eq, (forall x. VarName -> Rep VarName x)
-> (forall x. Rep VarName x -> VarName) -> Generic VarName
forall x. Rep VarName x -> VarName
forall x. VarName -> Rep VarName x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. VarName -> Rep VarName x
from :: forall x. VarName -> Rep VarName x
$cto :: forall x. Rep VarName x -> VarName
to :: forall x. Rep VarName x -> VarName
Generic, [VarName] -> Value
[VarName] -> Encoding
VarName -> Bool
VarName -> Value
VarName -> Encoding
(VarName -> Value)
-> (VarName -> Encoding)
-> ([VarName] -> Value)
-> ([VarName] -> Encoding)
-> (VarName -> Bool)
-> ToJSON VarName
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: VarName -> Value
toJSON :: VarName -> Value
$ctoEncoding :: VarName -> Encoding
toEncoding :: VarName -> Encoding
$ctoJSONList :: [VarName] -> Value
toJSONList :: [VarName] -> Value
$ctoEncodingList :: [VarName] -> Encoding
toEncodingList :: [VarName] -> Encoding
$comitField :: VarName -> Bool
omitField :: VarName -> Bool
ToJSON, Maybe VarName
Value -> Parser [VarName]
Value -> Parser VarName
(Value -> Parser VarName)
-> (Value -> Parser [VarName]) -> Maybe VarName -> FromJSON VarName
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser VarName
parseJSON :: Value -> Parser VarName
$cparseJSONList :: Value -> Parser [VarName]
parseJSONList :: Value -> Parser [VarName]
$comittedField :: Maybe VarName
omittedField :: Maybe VarName
FromJSON, Eq VarName
Eq VarName
-> (VarName -> VarName -> Ordering)
-> (VarName -> VarName -> Bool)
-> (VarName -> VarName -> Bool)
-> (VarName -> VarName -> Bool)
-> (VarName -> VarName -> Bool)
-> (VarName -> VarName -> VarName)
-> (VarName -> VarName -> VarName)
-> Ord VarName
VarName -> VarName -> Bool
VarName -> VarName -> Ordering
VarName -> VarName -> VarName
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 :: VarName -> VarName -> Ordering
compare :: VarName -> VarName -> Ordering
$c< :: VarName -> VarName -> Bool
< :: VarName -> VarName -> Bool
$c<= :: VarName -> VarName -> Bool
<= :: VarName -> VarName -> Bool
$c> :: VarName -> VarName -> Bool
> :: VarName -> VarName -> Bool
$c>= :: VarName -> VarName -> Bool
>= :: VarName -> VarName -> Bool
$cmax :: VarName -> VarName -> VarName
max :: VarName -> VarName -> VarName
$cmin :: VarName -> VarName -> VarName
min :: VarName -> VarName -> VarName
Ord )
data PkgName   = PkgName   Named deriving ( Int -> PkgName -> ShowS
[PkgName] -> ShowS
PkgName -> String
(Int -> PkgName -> ShowS)
-> (PkgName -> String) -> ([PkgName] -> ShowS) -> Show PkgName
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PkgName -> ShowS
showsPrec :: Int -> PkgName -> ShowS
$cshow :: PkgName -> String
show :: PkgName -> String
$cshowList :: [PkgName] -> ShowS
showList :: [PkgName] -> ShowS
Show, PkgName -> PkgName -> Bool
(PkgName -> PkgName -> Bool)
-> (PkgName -> PkgName -> Bool) -> Eq PkgName
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PkgName -> PkgName -> Bool
== :: PkgName -> PkgName -> Bool
$c/= :: PkgName -> PkgName -> Bool
/= :: PkgName -> PkgName -> Bool
Eq, (forall x. PkgName -> Rep PkgName x)
-> (forall x. Rep PkgName x -> PkgName) -> Generic PkgName
forall x. Rep PkgName x -> PkgName
forall x. PkgName -> Rep PkgName x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. PkgName -> Rep PkgName x
from :: forall x. PkgName -> Rep PkgName x
$cto :: forall x. Rep PkgName x -> PkgName
to :: forall x. Rep PkgName x -> PkgName
Generic, [PkgName] -> Value
[PkgName] -> Encoding
PkgName -> Bool
PkgName -> Value
PkgName -> Encoding
(PkgName -> Value)
-> (PkgName -> Encoding)
-> ([PkgName] -> Value)
-> ([PkgName] -> Encoding)
-> (PkgName -> Bool)
-> ToJSON PkgName
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: PkgName -> Value
toJSON :: PkgName -> Value
$ctoEncoding :: PkgName -> Encoding
toEncoding :: PkgName -> Encoding
$ctoJSONList :: [PkgName] -> Value
toJSONList :: [PkgName] -> Value
$ctoEncodingList :: [PkgName] -> Encoding
toEncodingList :: [PkgName] -> Encoding
$comitField :: PkgName -> Bool
omitField :: PkgName -> Bool
ToJSON, Maybe PkgName
Value -> Parser [PkgName]
Value -> Parser PkgName
(Value -> Parser PkgName)
-> (Value -> Parser [PkgName]) -> Maybe PkgName -> FromJSON PkgName
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser PkgName
parseJSON :: Value -> Parser PkgName
$cparseJSONList :: Value -> Parser [PkgName]
parseJSONList :: Value -> Parser [PkgName]
$comittedField :: Maybe PkgName
omittedField :: Maybe PkgName
FromJSON, Eq PkgName
Eq PkgName
-> (PkgName -> PkgName -> Ordering)
-> (PkgName -> PkgName -> Bool)
-> (PkgName -> PkgName -> Bool)
-> (PkgName -> PkgName -> Bool)
-> (PkgName -> PkgName -> Bool)
-> (PkgName -> PkgName -> PkgName)
-> (PkgName -> PkgName -> PkgName)
-> Ord PkgName
PkgName -> PkgName -> Bool
PkgName -> PkgName -> Ordering
PkgName -> PkgName -> PkgName
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 :: PkgName -> PkgName -> Ordering
compare :: PkgName -> PkgName -> Ordering
$c< :: PkgName -> PkgName -> Bool
< :: PkgName -> PkgName -> Bool
$c<= :: PkgName -> PkgName -> Bool
<= :: PkgName -> PkgName -> Bool
$c> :: PkgName -> PkgName -> Bool
> :: PkgName -> PkgName -> Bool
$c>= :: PkgName -> PkgName -> Bool
>= :: PkgName -> PkgName -> Bool
$cmax :: PkgName -> PkgName -> PkgName
max :: PkgName -> PkgName -> PkgName
$cmin :: PkgName -> PkgName -> PkgName
min :: PkgName -> PkgName -> PkgName
Ord )
data FuncName  = FuncName  Named deriving ( Int -> FuncName -> ShowS
[FuncName] -> ShowS
FuncName -> String
(Int -> FuncName -> ShowS)
-> (FuncName -> String) -> ([FuncName] -> ShowS) -> Show FuncName
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> FuncName -> ShowS
showsPrec :: Int -> FuncName -> ShowS
$cshow :: FuncName -> String
show :: FuncName -> String
$cshowList :: [FuncName] -> ShowS
showList :: [FuncName] -> ShowS
Show, FuncName -> FuncName -> Bool
(FuncName -> FuncName -> Bool)
-> (FuncName -> FuncName -> Bool) -> Eq FuncName
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: FuncName -> FuncName -> Bool
== :: FuncName -> FuncName -> Bool
$c/= :: FuncName -> FuncName -> Bool
/= :: FuncName -> FuncName -> Bool
Eq, (forall x. FuncName -> Rep FuncName x)
-> (forall x. Rep FuncName x -> FuncName) -> Generic FuncName
forall x. Rep FuncName x -> FuncName
forall x. FuncName -> Rep FuncName x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. FuncName -> Rep FuncName x
from :: forall x. FuncName -> Rep FuncName x
$cto :: forall x. Rep FuncName x -> FuncName
to :: forall x. Rep FuncName x -> FuncName
Generic, [FuncName] -> Value
[FuncName] -> Encoding
FuncName -> Bool
FuncName -> Value
FuncName -> Encoding
(FuncName -> Value)
-> (FuncName -> Encoding)
-> ([FuncName] -> Value)
-> ([FuncName] -> Encoding)
-> (FuncName -> Bool)
-> ToJSON FuncName
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: FuncName -> Value
toJSON :: FuncName -> Value
$ctoEncoding :: FuncName -> Encoding
toEncoding :: FuncName -> Encoding
$ctoJSONList :: [FuncName] -> Value
toJSONList :: [FuncName] -> Value
$ctoEncodingList :: [FuncName] -> Encoding
toEncodingList :: [FuncName] -> Encoding
$comitField :: FuncName -> Bool
omitField :: FuncName -> Bool
ToJSON, Maybe FuncName
Value -> Parser [FuncName]
Value -> Parser FuncName
(Value -> Parser FuncName)
-> (Value -> Parser [FuncName])
-> Maybe FuncName
-> FromJSON FuncName
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser FuncName
parseJSON :: Value -> Parser FuncName
$cparseJSONList :: Value -> Parser [FuncName]
parseJSONList :: Value -> Parser [FuncName]
$comittedField :: Maybe FuncName
omittedField :: Maybe FuncName
FromJSON, Eq FuncName
Eq FuncName
-> (FuncName -> FuncName -> Ordering)
-> (FuncName -> FuncName -> Bool)
-> (FuncName -> FuncName -> Bool)
-> (FuncName -> FuncName -> Bool)
-> (FuncName -> FuncName -> Bool)
-> (FuncName -> FuncName -> FuncName)
-> (FuncName -> FuncName -> FuncName)
-> Ord FuncName
FuncName -> FuncName -> Bool
FuncName -> FuncName -> Ordering
FuncName -> FuncName -> FuncName
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 :: FuncName -> FuncName -> Ordering
compare :: FuncName -> FuncName -> Ordering
$c< :: FuncName -> FuncName -> Bool
< :: FuncName -> FuncName -> Bool
$c<= :: FuncName -> FuncName -> Bool
<= :: FuncName -> FuncName -> Bool
$c> :: FuncName -> FuncName -> Bool
> :: FuncName -> FuncName -> Bool
$c>= :: FuncName -> FuncName -> Bool
>= :: FuncName -> FuncName -> Bool
$cmax :: FuncName -> FuncName -> FuncName
max :: FuncName -> FuncName -> FuncName
$cmin :: FuncName -> FuncName -> FuncName
min :: FuncName -> FuncName -> FuncName
Ord )
data ParamName = ParamName Named deriving ( Int -> ParamName -> ShowS
[ParamName] -> ShowS
ParamName -> String
(Int -> ParamName -> ShowS)
-> (ParamName -> String)
-> ([ParamName] -> ShowS)
-> Show ParamName
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ParamName -> ShowS
showsPrec :: Int -> ParamName -> ShowS
$cshow :: ParamName -> String
show :: ParamName -> String
$cshowList :: [ParamName] -> ShowS
showList :: [ParamName] -> ShowS
Show, ParamName -> ParamName -> Bool
(ParamName -> ParamName -> Bool)
-> (ParamName -> ParamName -> Bool) -> Eq ParamName
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ParamName -> ParamName -> Bool
== :: ParamName -> ParamName -> Bool
$c/= :: ParamName -> ParamName -> Bool
/= :: ParamName -> ParamName -> Bool
Eq, (forall x. ParamName -> Rep ParamName x)
-> (forall x. Rep ParamName x -> ParamName) -> Generic ParamName
forall x. Rep ParamName x -> ParamName
forall x. ParamName -> Rep ParamName x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. ParamName -> Rep ParamName x
from :: forall x. ParamName -> Rep ParamName x
$cto :: forall x. Rep ParamName x -> ParamName
to :: forall x. Rep ParamName x -> ParamName
Generic, [ParamName] -> Value
[ParamName] -> Encoding
ParamName -> Bool
ParamName -> Value
ParamName -> Encoding
(ParamName -> Value)
-> (ParamName -> Encoding)
-> ([ParamName] -> Value)
-> ([ParamName] -> Encoding)
-> (ParamName -> Bool)
-> ToJSON ParamName
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: ParamName -> Value
toJSON :: ParamName -> Value
$ctoEncoding :: ParamName -> Encoding
toEncoding :: ParamName -> Encoding
$ctoJSONList :: [ParamName] -> Value
toJSONList :: [ParamName] -> Value
$ctoEncodingList :: [ParamName] -> Encoding
toEncodingList :: [ParamName] -> Encoding
$comitField :: ParamName -> Bool
omitField :: ParamName -> Bool
ToJSON, Maybe ParamName
Value -> Parser [ParamName]
Value -> Parser ParamName
(Value -> Parser ParamName)
-> (Value -> Parser [ParamName])
-> Maybe ParamName
-> FromJSON ParamName
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser ParamName
parseJSON :: Value -> Parser ParamName
$cparseJSONList :: Value -> Parser [ParamName]
parseJSONList :: Value -> Parser [ParamName]
$comittedField :: Maybe ParamName
omittedField :: Maybe ParamName
FromJSON, Eq ParamName
Eq ParamName
-> (ParamName -> ParamName -> Ordering)
-> (ParamName -> ParamName -> Bool)
-> (ParamName -> ParamName -> Bool)
-> (ParamName -> ParamName -> Bool)
-> (ParamName -> ParamName -> Bool)
-> (ParamName -> ParamName -> ParamName)
-> (ParamName -> ParamName -> ParamName)
-> Ord ParamName
ParamName -> ParamName -> Bool
ParamName -> ParamName -> Ordering
ParamName -> ParamName -> ParamName
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 :: ParamName -> ParamName -> Ordering
compare :: ParamName -> ParamName -> Ordering
$c< :: ParamName -> ParamName -> Bool
< :: ParamName -> ParamName -> Bool
$c<= :: ParamName -> ParamName -> Bool
<= :: ParamName -> ParamName -> Bool
$c> :: ParamName -> ParamName -> Bool
> :: ParamName -> ParamName -> Bool
$c>= :: ParamName -> ParamName -> Bool
>= :: ParamName -> ParamName -> Bool
$cmax :: ParamName -> ParamName -> ParamName
max :: ParamName -> ParamName -> ParamName
$cmin :: ParamName -> ParamName -> ParamName
min :: ParamName -> ParamName -> ParamName
Ord )
data FieldName = FieldName Named deriving ( Int -> FieldName -> ShowS
[FieldName] -> ShowS
FieldName -> String
(Int -> FieldName -> ShowS)
-> (FieldName -> String)
-> ([FieldName] -> ShowS)
-> Show FieldName
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> FieldName -> ShowS
showsPrec :: Int -> FieldName -> ShowS
$cshow :: FieldName -> String
show :: FieldName -> String
$cshowList :: [FieldName] -> ShowS
showList :: [FieldName] -> ShowS
Show, FieldName -> FieldName -> Bool
(FieldName -> FieldName -> Bool)
-> (FieldName -> FieldName -> Bool) -> Eq FieldName
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: FieldName -> FieldName -> Bool
== :: FieldName -> FieldName -> Bool
$c/= :: FieldName -> FieldName -> Bool
/= :: FieldName -> FieldName -> Bool
Eq, (forall x. FieldName -> Rep FieldName x)
-> (forall x. Rep FieldName x -> FieldName) -> Generic FieldName
forall x. Rep FieldName x -> FieldName
forall x. FieldName -> Rep FieldName x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. FieldName -> Rep FieldName x
from :: forall x. FieldName -> Rep FieldName x
$cto :: forall x. Rep FieldName x -> FieldName
to :: forall x. Rep FieldName x -> FieldName
Generic, [FieldName] -> Value
[FieldName] -> Encoding
FieldName -> Bool
FieldName -> Value
FieldName -> Encoding
(FieldName -> Value)
-> (FieldName -> Encoding)
-> ([FieldName] -> Value)
-> ([FieldName] -> Encoding)
-> (FieldName -> Bool)
-> ToJSON FieldName
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: FieldName -> Value
toJSON :: FieldName -> Value
$ctoEncoding :: FieldName -> Encoding
toEncoding :: FieldName -> Encoding
$ctoJSONList :: [FieldName] -> Value
toJSONList :: [FieldName] -> Value
$ctoEncodingList :: [FieldName] -> Encoding
toEncodingList :: [FieldName] -> Encoding
$comitField :: FieldName -> Bool
omitField :: FieldName -> Bool
ToJSON, Maybe FieldName
Value -> Parser [FieldName]
Value -> Parser FieldName
(Value -> Parser FieldName)
-> (Value -> Parser [FieldName])
-> Maybe FieldName
-> FromJSON FieldName
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser FieldName
parseJSON :: Value -> Parser FieldName
$cparseJSONList :: Value -> Parser [FieldName]
parseJSONList :: Value -> Parser [FieldName]
$comittedField :: Maybe FieldName
omittedField :: Maybe FieldName
FromJSON, Eq FieldName
Eq FieldName
-> (FieldName -> FieldName -> Ordering)
-> (FieldName -> FieldName -> Bool)
-> (FieldName -> FieldName -> Bool)
-> (FieldName -> FieldName -> Bool)
-> (FieldName -> FieldName -> Bool)
-> (FieldName -> FieldName -> FieldName)
-> (FieldName -> FieldName -> FieldName)
-> Ord FieldName
FieldName -> FieldName -> Bool
FieldName -> FieldName -> Ordering
FieldName -> FieldName -> FieldName
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 :: FieldName -> FieldName -> Ordering
compare :: FieldName -> FieldName -> Ordering
$c< :: FieldName -> FieldName -> Bool
< :: FieldName -> FieldName -> Bool
$c<= :: FieldName -> FieldName -> Bool
<= :: FieldName -> FieldName -> Bool
$c> :: FieldName -> FieldName -> Bool
> :: FieldName -> FieldName -> Bool
$c>= :: FieldName -> FieldName -> Bool
>= :: FieldName -> FieldName -> Bool
$cmax :: FieldName -> FieldName -> FieldName
max :: FieldName -> FieldName -> FieldName
$cmin :: FieldName -> FieldName -> FieldName
min :: FieldName -> FieldName -> FieldName
Ord )
data ClassName = ClassName Named deriving ( Int -> ClassName -> ShowS
[ClassName] -> ShowS
ClassName -> String
(Int -> ClassName -> ShowS)
-> (ClassName -> String)
-> ([ClassName] -> ShowS)
-> Show ClassName
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ClassName -> ShowS
showsPrec :: Int -> ClassName -> ShowS
$cshow :: ClassName -> String
show :: ClassName -> String
$cshowList :: [ClassName] -> ShowS
showList :: [ClassName] -> ShowS
Show, ClassName -> ClassName -> Bool
(ClassName -> ClassName -> Bool)
-> (ClassName -> ClassName -> Bool) -> Eq ClassName
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ClassName -> ClassName -> Bool
== :: ClassName -> ClassName -> Bool
$c/= :: ClassName -> ClassName -> Bool
/= :: ClassName -> ClassName -> Bool
Eq, (forall x. ClassName -> Rep ClassName x)
-> (forall x. Rep ClassName x -> ClassName) -> Generic ClassName
forall x. Rep ClassName x -> ClassName
forall x. ClassName -> Rep ClassName x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. ClassName -> Rep ClassName x
from :: forall x. ClassName -> Rep ClassName x
$cto :: forall x. Rep ClassName x -> ClassName
to :: forall x. Rep ClassName x -> ClassName
Generic, [ClassName] -> Value
[ClassName] -> Encoding
ClassName -> Bool
ClassName -> Value
ClassName -> Encoding
(ClassName -> Value)
-> (ClassName -> Encoding)
-> ([ClassName] -> Value)
-> ([ClassName] -> Encoding)
-> (ClassName -> Bool)
-> ToJSON ClassName
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: ClassName -> Value
toJSON :: ClassName -> Value
$ctoEncoding :: ClassName -> Encoding
toEncoding :: ClassName -> Encoding
$ctoJSONList :: [ClassName] -> Value
toJSONList :: [ClassName] -> Value
$ctoEncodingList :: [ClassName] -> Encoding
toEncodingList :: [ClassName] -> Encoding
$comitField :: ClassName -> Bool
omitField :: ClassName -> Bool
ToJSON, Maybe ClassName
Value -> Parser [ClassName]
Value -> Parser ClassName
(Value -> Parser ClassName)
-> (Value -> Parser [ClassName])
-> Maybe ClassName
-> FromJSON ClassName
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser ClassName
parseJSON :: Value -> Parser ClassName
$cparseJSONList :: Value -> Parser [ClassName]
parseJSONList :: Value -> Parser [ClassName]
$comittedField :: Maybe ClassName
omittedField :: Maybe ClassName
FromJSON, Eq ClassName
Eq ClassName
-> (ClassName -> ClassName -> Ordering)
-> (ClassName -> ClassName -> Bool)
-> (ClassName -> ClassName -> Bool)
-> (ClassName -> ClassName -> Bool)
-> (ClassName -> ClassName -> Bool)
-> (ClassName -> ClassName -> ClassName)
-> (ClassName -> ClassName -> ClassName)
-> Ord ClassName
ClassName -> ClassName -> Bool
ClassName -> ClassName -> Ordering
ClassName -> ClassName -> ClassName
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 :: ClassName -> ClassName -> Ordering
compare :: ClassName -> ClassName -> Ordering
$c< :: ClassName -> ClassName -> Bool
< :: ClassName -> ClassName -> Bool
$c<= :: ClassName -> ClassName -> Bool
<= :: ClassName -> ClassName -> Bool
$c> :: ClassName -> ClassName -> Bool
> :: ClassName -> ClassName -> Bool
$c>= :: ClassName -> ClassName -> Bool
>= :: ClassName -> ClassName -> Bool
$cmax :: ClassName -> ClassName -> ClassName
max :: ClassName -> ClassName -> ClassName
$cmin :: ClassName -> ClassName -> ClassName
min :: ClassName -> ClassName -> ClassName
Ord )
data SuperName = SuperName Named deriving ( Int -> SuperName -> ShowS
[SuperName] -> ShowS
SuperName -> String
(Int -> SuperName -> ShowS)
-> (SuperName -> String)
-> ([SuperName] -> ShowS)
-> Show SuperName
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> SuperName -> ShowS
showsPrec :: Int -> SuperName -> ShowS
$cshow :: SuperName -> String
show :: SuperName -> String
$cshowList :: [SuperName] -> ShowS
showList :: [SuperName] -> ShowS
Show, SuperName -> SuperName -> Bool
(SuperName -> SuperName -> Bool)
-> (SuperName -> SuperName -> Bool) -> Eq SuperName
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SuperName -> SuperName -> Bool
== :: SuperName -> SuperName -> Bool
$c/= :: SuperName -> SuperName -> Bool
/= :: SuperName -> SuperName -> Bool
Eq, (forall x. SuperName -> Rep SuperName x)
-> (forall x. Rep SuperName x -> SuperName) -> Generic SuperName
forall x. Rep SuperName x -> SuperName
forall x. SuperName -> Rep SuperName x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SuperName -> Rep SuperName x
from :: forall x. SuperName -> Rep SuperName x
$cto :: forall x. Rep SuperName x -> SuperName
to :: forall x. Rep SuperName x -> SuperName
Generic, [SuperName] -> Value
[SuperName] -> Encoding
SuperName -> Bool
SuperName -> Value
SuperName -> Encoding
(SuperName -> Value)
-> (SuperName -> Encoding)
-> ([SuperName] -> Value)
-> ([SuperName] -> Encoding)
-> (SuperName -> Bool)
-> ToJSON SuperName
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: SuperName -> Value
toJSON :: SuperName -> Value
$ctoEncoding :: SuperName -> Encoding
toEncoding :: SuperName -> Encoding
$ctoJSONList :: [SuperName] -> Value
toJSONList :: [SuperName] -> Value
$ctoEncodingList :: [SuperName] -> Encoding
toEncodingList :: [SuperName] -> Encoding
$comitField :: SuperName -> Bool
omitField :: SuperName -> Bool
ToJSON, Maybe SuperName
Value -> Parser [SuperName]
Value -> Parser SuperName
(Value -> Parser SuperName)
-> (Value -> Parser [SuperName])
-> Maybe SuperName
-> FromJSON SuperName
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser SuperName
parseJSON :: Value -> Parser SuperName
$cparseJSONList :: Value -> Parser [SuperName]
parseJSONList :: Value -> Parser [SuperName]
$comittedField :: Maybe SuperName
omittedField :: Maybe SuperName
FromJSON, Eq SuperName
Eq SuperName
-> (SuperName -> SuperName -> Ordering)
-> (SuperName -> SuperName -> Bool)
-> (SuperName -> SuperName -> Bool)
-> (SuperName -> SuperName -> Bool)
-> (SuperName -> SuperName -> Bool)
-> (SuperName -> SuperName -> SuperName)
-> (SuperName -> SuperName -> SuperName)
-> Ord SuperName
SuperName -> SuperName -> Bool
SuperName -> SuperName -> Ordering
SuperName -> SuperName -> SuperName
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 :: SuperName -> SuperName -> Ordering
compare :: SuperName -> SuperName -> Ordering
$c< :: SuperName -> SuperName -> Bool
< :: SuperName -> SuperName -> Bool
$c<= :: SuperName -> SuperName -> Bool
<= :: SuperName -> SuperName -> Bool
$c> :: SuperName -> SuperName -> Bool
> :: SuperName -> SuperName -> Bool
$c>= :: SuperName -> SuperName -> Bool
>= :: SuperName -> SuperName -> Bool
$cmax :: SuperName -> SuperName -> SuperName
max :: SuperName -> SuperName -> SuperName
$cmin :: SuperName -> SuperName -> SuperName
min :: SuperName -> SuperName -> SuperName
Ord )
data MembrName = MembrName Named deriving ( Int -> MembrName -> ShowS
[MembrName] -> ShowS
MembrName -> String
(Int -> MembrName -> ShowS)
-> (MembrName -> String)
-> ([MembrName] -> ShowS)
-> Show MembrName
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> MembrName -> ShowS
showsPrec :: Int -> MembrName -> ShowS
$cshow :: MembrName -> String
show :: MembrName -> String
$cshowList :: [MembrName] -> ShowS
showList :: [MembrName] -> ShowS
Show, MembrName -> MembrName -> Bool
(MembrName -> MembrName -> Bool)
-> (MembrName -> MembrName -> Bool) -> Eq MembrName
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: MembrName -> MembrName -> Bool
== :: MembrName -> MembrName -> Bool
$c/= :: MembrName -> MembrName -> Bool
/= :: MembrName -> MembrName -> Bool
Eq, (forall x. MembrName -> Rep MembrName x)
-> (forall x. Rep MembrName x -> MembrName) -> Generic MembrName
forall x. Rep MembrName x -> MembrName
forall x. MembrName -> Rep MembrName x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. MembrName -> Rep MembrName x
from :: forall x. MembrName -> Rep MembrName x
$cto :: forall x. Rep MembrName x -> MembrName
to :: forall x. Rep MembrName x -> MembrName
Generic, [MembrName] -> Value
[MembrName] -> Encoding
MembrName -> Bool
MembrName -> Value
MembrName -> Encoding
(MembrName -> Value)
-> (MembrName -> Encoding)
-> ([MembrName] -> Value)
-> ([MembrName] -> Encoding)
-> (MembrName -> Bool)
-> ToJSON MembrName
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: MembrName -> Value
toJSON :: MembrName -> Value
$ctoEncoding :: MembrName -> Encoding
toEncoding :: MembrName -> Encoding
$ctoJSONList :: [MembrName] -> Value
toJSONList :: [MembrName] -> Value
$ctoEncodingList :: [MembrName] -> Encoding
toEncodingList :: [MembrName] -> Encoding
$comitField :: MembrName -> Bool
omitField :: MembrName -> Bool
ToJSON, Maybe MembrName
Value -> Parser [MembrName]
Value -> Parser MembrName
(Value -> Parser MembrName)
-> (Value -> Parser [MembrName])
-> Maybe MembrName
-> FromJSON MembrName
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser MembrName
parseJSON :: Value -> Parser MembrName
$cparseJSONList :: Value -> Parser [MembrName]
parseJSONList :: Value -> Parser [MembrName]
$comittedField :: Maybe MembrName
omittedField :: Maybe MembrName
FromJSON, Eq MembrName
Eq MembrName
-> (MembrName -> MembrName -> Ordering)
-> (MembrName -> MembrName -> Bool)
-> (MembrName -> MembrName -> Bool)
-> (MembrName -> MembrName -> Bool)
-> (MembrName -> MembrName -> Bool)
-> (MembrName -> MembrName -> MembrName)
-> (MembrName -> MembrName -> MembrName)
-> Ord MembrName
MembrName -> MembrName -> Bool
MembrName -> MembrName -> Ordering
MembrName -> MembrName -> MembrName
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 :: MembrName -> MembrName -> Ordering
compare :: MembrName -> MembrName -> Ordering
$c< :: MembrName -> MembrName -> Bool
< :: MembrName -> MembrName -> Bool
$c<= :: MembrName -> MembrName -> Bool
<= :: MembrName -> MembrName -> Bool
$c> :: MembrName -> MembrName -> Bool
> :: MembrName -> MembrName -> Bool
$c>= :: MembrName -> MembrName -> Bool
>= :: MembrName -> MembrName -> Bool
$cmax :: MembrName -> MembrName -> MembrName
max :: MembrName -> MembrName -> MembrName
$cmin :: MembrName -> MembrName -> MembrName
min :: MembrName -> MembrName -> MembrName
Ord, ToJSONKeyFunction [MembrName]
ToJSONKeyFunction MembrName
ToJSONKeyFunction MembrName
-> ToJSONKeyFunction [MembrName] -> ToJSONKey MembrName
forall a.
ToJSONKeyFunction a -> ToJSONKeyFunction [a] -> ToJSONKey a
$ctoJSONKey :: ToJSONKeyFunction MembrName
toJSONKey :: ToJSONKeyFunction MembrName
$ctoJSONKeyList :: ToJSONKeyFunction [MembrName]
toJSONKeyList :: ToJSONKeyFunction [MembrName]
ToJSONKey, FromJSONKeyFunction [MembrName]
FromJSONKeyFunction MembrName
FromJSONKeyFunction MembrName
-> FromJSONKeyFunction [MembrName] -> FromJSONKey MembrName
forall a.
FromJSONKeyFunction a -> FromJSONKeyFunction [a] -> FromJSONKey a
$cfromJSONKey :: FromJSONKeyFunction MembrName
fromJSONKey :: FromJSONKeyFunction MembrName
$cfromJSONKeyList :: FromJSONKeyFunction [MembrName]
fromJSONKeyList :: FromJSONKeyFunction [MembrName]
FromJSONKey )
data MethdName = MethdName Named deriving ( Int -> MethdName -> ShowS
[MethdName] -> ShowS
MethdName -> String
(Int -> MethdName -> ShowS)
-> (MethdName -> String)
-> ([MethdName] -> ShowS)
-> Show MethdName
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> MethdName -> ShowS
showsPrec :: Int -> MethdName -> ShowS
$cshow :: MethdName -> String
show :: MethdName -> String
$cshowList :: [MethdName] -> ShowS
showList :: [MethdName] -> ShowS
Show, MethdName -> MethdName -> Bool
(MethdName -> MethdName -> Bool)
-> (MethdName -> MethdName -> Bool) -> Eq MethdName
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: MethdName -> MethdName -> Bool
== :: MethdName -> MethdName -> Bool
$c/= :: MethdName -> MethdName -> Bool
/= :: MethdName -> MethdName -> Bool
Eq, (forall x. MethdName -> Rep MethdName x)
-> (forall x. Rep MethdName x -> MethdName) -> Generic MethdName
forall x. Rep MethdName x -> MethdName
forall x. MethdName -> Rep MethdName x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. MethdName -> Rep MethdName x
from :: forall x. MethdName -> Rep MethdName x
$cto :: forall x. Rep MethdName x -> MethdName
to :: forall x. Rep MethdName x -> MethdName
Generic, [MethdName] -> Value
[MethdName] -> Encoding
MethdName -> Bool
MethdName -> Value
MethdName -> Encoding
(MethdName -> Value)
-> (MethdName -> Encoding)
-> ([MethdName] -> Value)
-> ([MethdName] -> Encoding)
-> (MethdName -> Bool)
-> ToJSON MethdName
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: MethdName -> Value
toJSON :: MethdName -> Value
$ctoEncoding :: MethdName -> Encoding
toEncoding :: MethdName -> Encoding
$ctoJSONList :: [MethdName] -> Value
toJSONList :: [MethdName] -> Value
$ctoEncodingList :: [MethdName] -> Encoding
toEncodingList :: [MethdName] -> Encoding
$comitField :: MethdName -> Bool
omitField :: MethdName -> Bool
ToJSON, Maybe MethdName
Value -> Parser [MethdName]
Value -> Parser MethdName
(Value -> Parser MethdName)
-> (Value -> Parser [MethdName])
-> Maybe MethdName
-> FromJSON MethdName
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser MethdName
parseJSON :: Value -> Parser MethdName
$cparseJSONList :: Value -> Parser [MethdName]
parseJSONList :: Value -> Parser [MethdName]
$comittedField :: Maybe MethdName
omittedField :: Maybe MethdName
FromJSON, Eq MethdName
Eq MethdName
-> (MethdName -> MethdName -> Ordering)
-> (MethdName -> MethdName -> Bool)
-> (MethdName -> MethdName -> Bool)
-> (MethdName -> MethdName -> Bool)
-> (MethdName -> MethdName -> Bool)
-> (MethdName -> MethdName -> MethdName)
-> (MethdName -> MethdName -> MethdName)
-> Ord MethdName
MethdName -> MethdName -> Bool
MethdName -> MethdName -> Ordering
MethdName -> MethdName -> MethdName
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 :: MethdName -> MethdName -> Ordering
compare :: MethdName -> MethdName -> Ordering
$c< :: MethdName -> MethdName -> Bool
< :: MethdName -> MethdName -> Bool
$c<= :: MethdName -> MethdName -> Bool
<= :: MethdName -> MethdName -> Bool
$c> :: MethdName -> MethdName -> Bool
> :: MethdName -> MethdName -> Bool
$c>= :: MethdName -> MethdName -> Bool
>= :: MethdName -> MethdName -> Bool
$cmax :: MethdName -> MethdName -> MethdName
max :: MethdName -> MethdName -> MethdName
$cmin :: MethdName -> MethdName -> MethdName
min :: MethdName -> MethdName -> MethdName
Ord, ToJSONKeyFunction [MethdName]
ToJSONKeyFunction MethdName
ToJSONKeyFunction MethdName
-> ToJSONKeyFunction [MethdName] -> ToJSONKey MethdName
forall a.
ToJSONKeyFunction a -> ToJSONKeyFunction [a] -> ToJSONKey a
$ctoJSONKey :: ToJSONKeyFunction MethdName
toJSONKey :: ToJSONKeyFunction MethdName
$ctoJSONKeyList :: ToJSONKeyFunction [MethdName]
toJSONKeyList :: ToJSONKeyFunction [MethdName]
ToJSONKey, FromJSONKeyFunction [MethdName]
FromJSONKeyFunction MethdName
FromJSONKeyFunction MethdName
-> FromJSONKeyFunction [MethdName] -> FromJSONKey MethdName
forall a.
FromJSONKeyFunction a -> FromJSONKeyFunction [a] -> FromJSONKey a
$cfromJSONKey :: FromJSONKeyFunction MethdName
fromJSONKey :: FromJSONKeyFunction MethdName
$cfromJSONKeyList :: FromJSONKeyFunction [MethdName]
fromJSONKeyList :: FromJSONKeyFunction [MethdName]
FromJSONKey )
data NominalTy = NominalTy Named deriving ( Int -> NominalTy -> ShowS
[NominalTy] -> ShowS
NominalTy -> String
(Int -> NominalTy -> ShowS)
-> (NominalTy -> String)
-> ([NominalTy] -> ShowS)
-> Show NominalTy
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> NominalTy -> ShowS
showsPrec :: Int -> NominalTy -> ShowS
$cshow :: NominalTy -> String
show :: NominalTy -> String
$cshowList :: [NominalTy] -> ShowS
showList :: [NominalTy] -> ShowS
Show, NominalTy -> NominalTy -> Bool
(NominalTy -> NominalTy -> Bool)
-> (NominalTy -> NominalTy -> Bool) -> Eq NominalTy
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: NominalTy -> NominalTy -> Bool
== :: NominalTy -> NominalTy -> Bool
$c/= :: NominalTy -> NominalTy -> Bool
/= :: NominalTy -> NominalTy -> Bool
Eq, (forall x. NominalTy -> Rep NominalTy x)
-> (forall x. Rep NominalTy x -> NominalTy) -> Generic NominalTy
forall x. Rep NominalTy x -> NominalTy
forall x. NominalTy -> Rep NominalTy x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. NominalTy -> Rep NominalTy x
from :: forall x. NominalTy -> Rep NominalTy x
$cto :: forall x. Rep NominalTy x -> NominalTy
to :: forall x. Rep NominalTy x -> NominalTy
Generic, [NominalTy] -> Value
[NominalTy] -> Encoding
NominalTy -> Bool
NominalTy -> Value
NominalTy -> Encoding
(NominalTy -> Value)
-> (NominalTy -> Encoding)
-> ([NominalTy] -> Value)
-> ([NominalTy] -> Encoding)
-> (NominalTy -> Bool)
-> ToJSON NominalTy
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: NominalTy -> Value
toJSON :: NominalTy -> Value
$ctoEncoding :: NominalTy -> Encoding
toEncoding :: NominalTy -> Encoding
$ctoJSONList :: [NominalTy] -> Value
toJSONList :: [NominalTy] -> Value
$ctoEncodingList :: [NominalTy] -> Encoding
toEncodingList :: [NominalTy] -> Encoding
$comitField :: NominalTy -> Bool
omitField :: NominalTy -> Bool
ToJSON, Maybe NominalTy
Value -> Parser [NominalTy]
Value -> Parser NominalTy
(Value -> Parser NominalTy)
-> (Value -> Parser [NominalTy])
-> Maybe NominalTy
-> FromJSON NominalTy
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser NominalTy
parseJSON :: Value -> Parser NominalTy
$cparseJSONList :: Value -> Parser [NominalTy]
parseJSONList :: Value -> Parser [NominalTy]
$comittedField :: Maybe NominalTy
omittedField :: Maybe NominalTy
FromJSON, Eq NominalTy
Eq NominalTy
-> (NominalTy -> NominalTy -> Ordering)
-> (NominalTy -> NominalTy -> Bool)
-> (NominalTy -> NominalTy -> Bool)
-> (NominalTy -> NominalTy -> Bool)
-> (NominalTy -> NominalTy -> Bool)
-> (NominalTy -> NominalTy -> NominalTy)
-> (NominalTy -> NominalTy -> NominalTy)
-> Ord NominalTy
NominalTy -> NominalTy -> Bool
NominalTy -> NominalTy -> Ordering
NominalTy -> NominalTy -> NominalTy
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 :: NominalTy -> NominalTy -> Ordering
compare :: NominalTy -> NominalTy -> Ordering
$c< :: NominalTy -> NominalTy -> Bool
< :: NominalTy -> NominalTy -> Bool
$c<= :: NominalTy -> NominalTy -> Bool
<= :: NominalTy -> NominalTy -> Bool
$c> :: NominalTy -> NominalTy -> Bool
> :: NominalTy -> NominalTy -> Bool
$c>= :: NominalTy -> NominalTy -> Bool
>= :: NominalTy -> NominalTy -> Bool
$cmax :: NominalTy -> NominalTy -> NominalTy
max :: NominalTy -> NominalTy -> NominalTy
$cmin :: NominalTy -> NominalTy -> NominalTy
min :: NominalTy -> NominalTy -> NominalTy
Ord )

-- getters signatures (to quiet ghc -Wall)

getVarNameToken   :: VarName   -> Named
getPkgNameToken   :: PkgName   -> Named
getFuncNameToken  :: FuncName  -> Named
getParamNameToken :: ParamName -> Named
getFieldNameToken :: FieldName -> Named
getClassNameToken :: ClassName -> Named
getSuperNameToken :: SuperName -> Named
getMembrNameToken :: MembrName -> Named
getMethdNameToken :: MethdName -> Named
getNominalTyToken :: NominalTy -> Named

-- getters

getVarNameToken :: VarName -> Named
getVarNameToken   (VarName   Named
v) = Named
v
getPkgNameToken :: PkgName -> Named
getPkgNameToken   (PkgName   Named
p) = Named
p
getFuncNameToken :: FuncName -> Named
getFuncNameToken  (FuncName  Named
f) = Named
f
getParamNameToken :: ParamName -> Named
getParamNameToken (ParamName Named
p) = Named
p
getFieldNameToken :: FieldName -> Named
getFieldNameToken (FieldName Named
f) = Named
f
getClassNameToken :: ClassName -> Named
getClassNameToken (ClassName Named
c) = Named
c
getSuperNameToken :: SuperName -> Named
getSuperNameToken (SuperName Named
s) = Named
s
getMembrNameToken :: MembrName -> Named
getMembrNameToken (MembrName Named
m) = Named
m
getMethdNameToken :: MethdName -> Named
getMethdNameToken (MethdName Named
m) = Named
m
getNominalTyToken :: NominalTy -> Named
getNominalTyToken (NominalTy Named
t) = Named
t

-- locations signatures

getVarNameLocation :: VarName -> Location
getFuncNameLocation :: FuncName -> Location
getClassNameLocation :: ClassName -> Location
getParamNameLocation :: ParamName -> Location
getFieldNameLocation :: FieldName -> Location
getMethodNameLocation :: MethdName -> Location

-- locations signatures

getVarNameLocation :: VarName -> Location
getVarNameLocation = Named -> Location
location (Named -> Location) -> (VarName -> Named) -> VarName -> Location
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VarName -> Named
getVarNameToken
getFuncNameLocation :: FuncName -> Location
getFuncNameLocation = Named -> Location
location (Named -> Location) -> (FuncName -> Named) -> FuncName -> Location
forall b c a. (b -> c) -> (a -> b) -> a -> c
. FuncName -> Named
getFuncNameToken
getClassNameLocation :: ClassName -> Location
getClassNameLocation = Named -> Location
location (Named -> Location)
-> (ClassName -> Named) -> ClassName -> Location
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ClassName -> Named
getClassNameToken
getParamNameLocation :: ParamName -> Location
getParamNameLocation = Named -> Location
location (Named -> Location)
-> (ParamName -> Named) -> ParamName -> Location
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ParamName -> Named
getParamNameToken
getFieldNameLocation :: FieldName -> Location
getFieldNameLocation = Named -> Location
location (Named -> Location)
-> (FieldName -> Named) -> FieldName -> Location
forall b c a. (b -> c) -> (a -> b) -> a -> c
. FieldName -> Named
getFieldNameToken
getMethodNameLocation :: MethdName -> Location
getMethodNameLocation = Named -> Location
location (Named -> Location)
-> (MethdName -> Named) -> MethdName -> Location
forall b c a. (b -> c) -> (a -> b) -> a -> c
. MethdName -> Named
getMethdNameToken

data ConstBool
   = ConstBool
   {
       ConstBool -> Bool
constBoolValue :: Bool,
       ConstBool -> Location
constBoolLocation :: Location
   }
   deriving ( Int -> ConstBool -> ShowS
[ConstBool] -> ShowS
ConstBool -> String
(Int -> ConstBool -> ShowS)
-> (ConstBool -> String)
-> ([ConstBool] -> ShowS)
-> Show ConstBool
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ConstBool -> ShowS
showsPrec :: Int -> ConstBool -> ShowS
$cshow :: ConstBool -> String
show :: ConstBool -> String
$cshowList :: [ConstBool] -> ShowS
showList :: [ConstBool] -> ShowS
Show, ConstBool -> ConstBool -> Bool
(ConstBool -> ConstBool -> Bool)
-> (ConstBool -> ConstBool -> Bool) -> Eq ConstBool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ConstBool -> ConstBool -> Bool
== :: ConstBool -> ConstBool -> Bool
$c/= :: ConstBool -> ConstBool -> Bool
/= :: ConstBool -> ConstBool -> Bool
Eq, (forall x. ConstBool -> Rep ConstBool x)
-> (forall x. Rep ConstBool x -> ConstBool) -> Generic ConstBool
forall x. Rep ConstBool x -> ConstBool
forall x. ConstBool -> Rep ConstBool x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. ConstBool -> Rep ConstBool x
from :: forall x. ConstBool -> Rep ConstBool x
$cto :: forall x. Rep ConstBool x -> ConstBool
to :: forall x. Rep ConstBool x -> ConstBool
Generic, [ConstBool] -> Value
[ConstBool] -> Encoding
ConstBool -> Bool
ConstBool -> Value
ConstBool -> Encoding
(ConstBool -> Value)
-> (ConstBool -> Encoding)
-> ([ConstBool] -> Value)
-> ([ConstBool] -> Encoding)
-> (ConstBool -> Bool)
-> ToJSON ConstBool
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: ConstBool -> Value
toJSON :: ConstBool -> Value
$ctoEncoding :: ConstBool -> Encoding
toEncoding :: ConstBool -> Encoding
$ctoJSONList :: [ConstBool] -> Value
toJSONList :: [ConstBool] -> Value
$ctoEncodingList :: [ConstBool] -> Encoding
toEncodingList :: [ConstBool] -> Encoding
$comitField :: ConstBool -> Bool
omitField :: ConstBool -> Bool
ToJSON, Maybe ConstBool
Value -> Parser [ConstBool]
Value -> Parser ConstBool
(Value -> Parser ConstBool)
-> (Value -> Parser [ConstBool])
-> Maybe ConstBool
-> FromJSON ConstBool
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser ConstBool
parseJSON :: Value -> Parser ConstBool
$cparseJSONList :: Value -> Parser [ConstBool]
parseJSONList :: Value -> Parser [ConstBool]
$comittedField :: Maybe ConstBool
omittedField :: Maybe ConstBool
FromJSON, Eq ConstBool
Eq ConstBool
-> (ConstBool -> ConstBool -> Ordering)
-> (ConstBool -> ConstBool -> Bool)
-> (ConstBool -> ConstBool -> Bool)
-> (ConstBool -> ConstBool -> Bool)
-> (ConstBool -> ConstBool -> Bool)
-> (ConstBool -> ConstBool -> ConstBool)
-> (ConstBool -> ConstBool -> ConstBool)
-> Ord ConstBool
ConstBool -> ConstBool -> Bool
ConstBool -> ConstBool -> Ordering
ConstBool -> ConstBool -> ConstBool
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 :: ConstBool -> ConstBool -> Ordering
compare :: ConstBool -> ConstBool -> Ordering
$c< :: ConstBool -> ConstBool -> Bool
< :: ConstBool -> ConstBool -> Bool
$c<= :: ConstBool -> ConstBool -> Bool
<= :: ConstBool -> ConstBool -> Bool
$c> :: ConstBool -> ConstBool -> Bool
> :: ConstBool -> ConstBool -> Bool
$c>= :: ConstBool -> ConstBool -> Bool
>= :: ConstBool -> ConstBool -> Bool
$cmax :: ConstBool -> ConstBool -> ConstBool
max :: ConstBool -> ConstBool -> ConstBool
$cmin :: ConstBool -> ConstBool -> ConstBool
min :: ConstBool -> ConstBool -> ConstBool
Ord )

data ConstInt
   = ConstInt
   {
       ConstInt -> Int
constIntValue :: Int,
       ConstInt -> Location
constIntLocation :: Location
   }
   deriving ( Int -> ConstInt -> ShowS
[ConstInt] -> ShowS
ConstInt -> String
(Int -> ConstInt -> ShowS)
-> (ConstInt -> String) -> ([ConstInt] -> ShowS) -> Show ConstInt
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ConstInt -> ShowS
showsPrec :: Int -> ConstInt -> ShowS
$cshow :: ConstInt -> String
show :: ConstInt -> String
$cshowList :: [ConstInt] -> ShowS
showList :: [ConstInt] -> ShowS
Show, ConstInt -> ConstInt -> Bool
(ConstInt -> ConstInt -> Bool)
-> (ConstInt -> ConstInt -> Bool) -> Eq ConstInt
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ConstInt -> ConstInt -> Bool
== :: ConstInt -> ConstInt -> Bool
$c/= :: ConstInt -> ConstInt -> Bool
/= :: ConstInt -> ConstInt -> Bool
Eq, (forall x. ConstInt -> Rep ConstInt x)
-> (forall x. Rep ConstInt x -> ConstInt) -> Generic ConstInt
forall x. Rep ConstInt x -> ConstInt
forall x. ConstInt -> Rep ConstInt x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. ConstInt -> Rep ConstInt x
from :: forall x. ConstInt -> Rep ConstInt x
$cto :: forall x. Rep ConstInt x -> ConstInt
to :: forall x. Rep ConstInt x -> ConstInt
Generic, [ConstInt] -> Value
[ConstInt] -> Encoding
ConstInt -> Bool
ConstInt -> Value
ConstInt -> Encoding
(ConstInt -> Value)
-> (ConstInt -> Encoding)
-> ([ConstInt] -> Value)
-> ([ConstInt] -> Encoding)
-> (ConstInt -> Bool)
-> ToJSON ConstInt
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: ConstInt -> Value
toJSON :: ConstInt -> Value
$ctoEncoding :: ConstInt -> Encoding
toEncoding :: ConstInt -> Encoding
$ctoJSONList :: [ConstInt] -> Value
toJSONList :: [ConstInt] -> Value
$ctoEncodingList :: [ConstInt] -> Encoding
toEncodingList :: [ConstInt] -> Encoding
$comitField :: ConstInt -> Bool
omitField :: ConstInt -> Bool
ToJSON, Maybe ConstInt
Value -> Parser [ConstInt]
Value -> Parser ConstInt
(Value -> Parser ConstInt)
-> (Value -> Parser [ConstInt])
-> Maybe ConstInt
-> FromJSON ConstInt
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser ConstInt
parseJSON :: Value -> Parser ConstInt
$cparseJSONList :: Value -> Parser [ConstInt]
parseJSONList :: Value -> Parser [ConstInt]
$comittedField :: Maybe ConstInt
omittedField :: Maybe ConstInt
FromJSON, Eq ConstInt
Eq ConstInt
-> (ConstInt -> ConstInt -> Ordering)
-> (ConstInt -> ConstInt -> Bool)
-> (ConstInt -> ConstInt -> Bool)
-> (ConstInt -> ConstInt -> Bool)
-> (ConstInt -> ConstInt -> Bool)
-> (ConstInt -> ConstInt -> ConstInt)
-> (ConstInt -> ConstInt -> ConstInt)
-> Ord ConstInt
ConstInt -> ConstInt -> Bool
ConstInt -> ConstInt -> Ordering
ConstInt -> ConstInt -> ConstInt
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 :: ConstInt -> ConstInt -> Ordering
compare :: ConstInt -> ConstInt -> Ordering
$c< :: ConstInt -> ConstInt -> Bool
< :: ConstInt -> ConstInt -> Bool
$c<= :: ConstInt -> ConstInt -> Bool
<= :: ConstInt -> ConstInt -> Bool
$c> :: ConstInt -> ConstInt -> Bool
> :: ConstInt -> ConstInt -> Bool
$c>= :: ConstInt -> ConstInt -> Bool
>= :: ConstInt -> ConstInt -> Bool
$cmax :: ConstInt -> ConstInt -> ConstInt
max :: ConstInt -> ConstInt -> ConstInt
$cmin :: ConstInt -> ConstInt -> ConstInt
min :: ConstInt -> ConstInt -> ConstInt
Ord )

data ConstStr
   = ConstStr
   {
       ConstStr -> String
constStrValue :: String,
       ConstStr -> Location
constStrLocation :: Location
   }
   deriving ( Int -> ConstStr -> ShowS
[ConstStr] -> ShowS
ConstStr -> String
(Int -> ConstStr -> ShowS)
-> (ConstStr -> String) -> ([ConstStr] -> ShowS) -> Show ConstStr
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ConstStr -> ShowS
showsPrec :: Int -> ConstStr -> ShowS
$cshow :: ConstStr -> String
show :: ConstStr -> String
$cshowList :: [ConstStr] -> ShowS
showList :: [ConstStr] -> ShowS
Show, ConstStr -> ConstStr -> Bool
(ConstStr -> ConstStr -> Bool)
-> (ConstStr -> ConstStr -> Bool) -> Eq ConstStr
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ConstStr -> ConstStr -> Bool
== :: ConstStr -> ConstStr -> Bool
$c/= :: ConstStr -> ConstStr -> Bool
/= :: ConstStr -> ConstStr -> Bool
Eq, (forall x. ConstStr -> Rep ConstStr x)
-> (forall x. Rep ConstStr x -> ConstStr) -> Generic ConstStr
forall x. Rep ConstStr x -> ConstStr
forall x. ConstStr -> Rep ConstStr x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. ConstStr -> Rep ConstStr x
from :: forall x. ConstStr -> Rep ConstStr x
$cto :: forall x. Rep ConstStr x -> ConstStr
to :: forall x. Rep ConstStr x -> ConstStr
Generic, [ConstStr] -> Value
[ConstStr] -> Encoding
ConstStr -> Bool
ConstStr -> Value
ConstStr -> Encoding
(ConstStr -> Value)
-> (ConstStr -> Encoding)
-> ([ConstStr] -> Value)
-> ([ConstStr] -> Encoding)
-> (ConstStr -> Bool)
-> ToJSON ConstStr
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: ConstStr -> Value
toJSON :: ConstStr -> Value
$ctoEncoding :: ConstStr -> Encoding
toEncoding :: ConstStr -> Encoding
$ctoJSONList :: [ConstStr] -> Value
toJSONList :: [ConstStr] -> Value
$ctoEncodingList :: [ConstStr] -> Encoding
toEncodingList :: [ConstStr] -> Encoding
$comitField :: ConstStr -> Bool
omitField :: ConstStr -> Bool
ToJSON, Maybe ConstStr
Value -> Parser [ConstStr]
Value -> Parser ConstStr
(Value -> Parser ConstStr)
-> (Value -> Parser [ConstStr])
-> Maybe ConstStr
-> FromJSON ConstStr
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser ConstStr
parseJSON :: Value -> Parser ConstStr
$cparseJSONList :: Value -> Parser [ConstStr]
parseJSONList :: Value -> Parser [ConstStr]
$comittedField :: Maybe ConstStr
omittedField :: Maybe ConstStr
FromJSON, Eq ConstStr
Eq ConstStr
-> (ConstStr -> ConstStr -> Ordering)
-> (ConstStr -> ConstStr -> Bool)
-> (ConstStr -> ConstStr -> Bool)
-> (ConstStr -> ConstStr -> Bool)
-> (ConstStr -> ConstStr -> Bool)
-> (ConstStr -> ConstStr -> ConstStr)
-> (ConstStr -> ConstStr -> ConstStr)
-> Ord ConstStr
ConstStr -> ConstStr -> Bool
ConstStr -> ConstStr -> Ordering
ConstStr -> ConstStr -> ConstStr
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 :: ConstStr -> ConstStr -> Ordering
compare :: ConstStr -> ConstStr -> Ordering
$c< :: ConstStr -> ConstStr -> Bool
< :: ConstStr -> ConstStr -> Bool
$c<= :: ConstStr -> ConstStr -> Bool
<= :: ConstStr -> ConstStr -> Bool
$c> :: ConstStr -> ConstStr -> Bool
> :: ConstStr -> ConstStr -> Bool
$c>= :: ConstStr -> ConstStr -> Bool
>= :: ConstStr -> ConstStr -> Bool
$cmax :: ConstStr -> ConstStr -> ConstStr
max :: ConstStr -> ConstStr -> ConstStr
$cmin :: ConstStr -> ConstStr -> ConstStr
min :: ConstStr -> ConstStr -> ConstStr
Ord )