module SyntaxTrees.Haskell.Common where


newtype Var
  = Var String
  deriving (Var -> Var -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Var -> Var -> Bool
$c/= :: Var -> Var -> Bool
== :: Var -> Var -> Bool
$c== :: Var -> Var -> Bool
Eq, Int -> Var -> ShowS
[Var] -> ShowS
Var -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Var] -> ShowS
$cshowList :: [Var] -> ShowS
show :: Var -> String
$cshow :: Var -> String
showsPrec :: Int -> Var -> ShowS
$cshowsPrec :: Int -> Var -> ShowS
Show)

newtype Ctor
  = Ctor String
  deriving (Ctor -> Ctor -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Ctor -> Ctor -> Bool
$c/= :: Ctor -> Ctor -> Bool
== :: Ctor -> Ctor -> Bool
$c== :: Ctor -> Ctor -> Bool
Eq, Int -> Ctor -> ShowS
[Ctor] -> ShowS
Ctor -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Ctor] -> ShowS
$cshowList :: [Ctor] -> ShowS
show :: Ctor -> String
$cshow :: Ctor -> String
showsPrec :: Int -> Ctor -> ShowS
$cshowsPrec :: Int -> Ctor -> ShowS
Show)

newtype VarOp
  = VarOp String
  deriving (VarOp -> VarOp -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: VarOp -> VarOp -> Bool
$c/= :: VarOp -> VarOp -> Bool
== :: VarOp -> VarOp -> Bool
$c== :: VarOp -> VarOp -> Bool
Eq, Int -> VarOp -> ShowS
[VarOp] -> ShowS
VarOp -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [VarOp] -> ShowS
$cshowList :: [VarOp] -> ShowS
show :: VarOp -> String
$cshow :: VarOp -> String
showsPrec :: Int -> VarOp -> ShowS
$cshowsPrec :: Int -> VarOp -> ShowS
Show)

newtype CtorOp
  = CtorOp String
  deriving (CtorOp -> CtorOp -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CtorOp -> CtorOp -> Bool
$c/= :: CtorOp -> CtorOp -> Bool
== :: CtorOp -> CtorOp -> Bool
$c== :: CtorOp -> CtorOp -> Bool
Eq, Int -> CtorOp -> ShowS
[CtorOp] -> ShowS
CtorOp -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CtorOp] -> ShowS
$cshowList :: [CtorOp] -> ShowS
show :: CtorOp -> String
$cshow :: CtorOp -> String
showsPrec :: Int -> CtorOp -> ShowS
$cshowsPrec :: Int -> CtorOp -> ShowS
Show)

newtype Class
  = Class String
  deriving (Class -> Class -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Class -> Class -> Bool
$c/= :: Class -> Class -> Bool
== :: Class -> Class -> Bool
$c== :: Class -> Class -> Bool
Eq, Int -> Class -> ShowS
[Class] -> ShowS
Class -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Class] -> ShowS
$cshowList :: [Class] -> ShowS
show :: Class -> String
$cshow :: Class -> String
showsPrec :: Int -> Class -> ShowS
$cshowsPrec :: Int -> Class -> ShowS
Show)

newtype Module
  = Module [String]
  deriving (Module -> Module -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Module -> Module -> Bool
$c/= :: Module -> Module -> Bool
== :: Module -> Module -> Bool
$c== :: Module -> Module -> Bool
Eq, Int -> Module -> ShowS
[Module] -> ShowS
Module -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Module] -> ShowS
$cshowList :: [Module] -> ShowS
show :: Module -> String
$cshow :: Module -> String
showsPrec :: Int -> Module -> ShowS
$cshowsPrec :: Int -> Module -> ShowS
Show)

data Literal
  = UnitLit
  | BoolLit Bool
  | IntLit String
  | FloatLit String
  | CharLit Char
  | StringLit String
  deriving (Literal -> Literal -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Literal -> Literal -> Bool
$c/= :: Literal -> Literal -> Bool
== :: Literal -> Literal -> Bool
$c== :: Literal -> Literal -> Bool
Eq, Int -> Literal -> ShowS
[Literal] -> ShowS
Literal -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Literal] -> ShowS
$cshowList :: [Literal] -> ShowS
show :: Literal -> String
$cshow :: Literal -> String
showsPrec :: Int -> Literal -> ShowS
$cshowsPrec :: Int -> Literal -> ShowS
Show)


data QVar
  = QVar (Maybe Module) Var
  deriving (QVar -> QVar -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: QVar -> QVar -> Bool
$c/= :: QVar -> QVar -> Bool
== :: QVar -> QVar -> Bool
$c== :: QVar -> QVar -> Bool
Eq, Int -> QVar -> ShowS
[QVar] -> ShowS
QVar -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [QVar] -> ShowS
$cshowList :: [QVar] -> ShowS
show :: QVar -> String
$cshow :: QVar -> String
showsPrec :: Int -> QVar -> ShowS
$cshowsPrec :: Int -> QVar -> ShowS
Show)

data QCtor
  = QCtor (Maybe Module) Ctor
  deriving (QCtor -> QCtor -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: QCtor -> QCtor -> Bool
$c/= :: QCtor -> QCtor -> Bool
== :: QCtor -> QCtor -> Bool
$c== :: QCtor -> QCtor -> Bool
Eq, Int -> QCtor -> ShowS
[QCtor] -> ShowS
QCtor -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [QCtor] -> ShowS
$cshowList :: [QCtor] -> ShowS
show :: QCtor -> String
$cshow :: QCtor -> String
showsPrec :: Int -> QCtor -> ShowS
$cshowsPrec :: Int -> QCtor -> ShowS
Show)

data QVarOp
  = QVarOp (Maybe Module) VarOp
  deriving (QVarOp -> QVarOp -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: QVarOp -> QVarOp -> Bool
$c/= :: QVarOp -> QVarOp -> Bool
== :: QVarOp -> QVarOp -> Bool
$c== :: QVarOp -> QVarOp -> Bool
Eq, Int -> QVarOp -> ShowS
[QVarOp] -> ShowS
QVarOp -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [QVarOp] -> ShowS
$cshowList :: [QVarOp] -> ShowS
show :: QVarOp -> String
$cshow :: QVarOp -> String
showsPrec :: Int -> QVarOp -> ShowS
$cshowsPrec :: Int -> QVarOp -> ShowS
Show)

data QCtorOp
  = QCtorOp (Maybe Module) CtorOp
  deriving (QCtorOp -> QCtorOp -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: QCtorOp -> QCtorOp -> Bool
$c/= :: QCtorOp -> QCtorOp -> Bool
== :: QCtorOp -> QCtorOp -> Bool
$c== :: QCtorOp -> QCtorOp -> Bool
Eq, Int -> QCtorOp -> ShowS
[QCtorOp] -> ShowS
QCtorOp -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [QCtorOp] -> ShowS
$cshowList :: [QCtorOp] -> ShowS
show :: QCtorOp -> String
$cshow :: QCtorOp -> String
showsPrec :: Int -> QCtorOp -> ShowS
$cshowsPrec :: Int -> QCtorOp -> ShowS
Show)

data QClass
  = QClass (Maybe Module) Class
  deriving (QClass -> QClass -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: QClass -> QClass -> Bool
$c/= :: QClass -> QClass -> Bool
== :: QClass -> QClass -> Bool
$c== :: QClass -> QClass -> Bool
Eq, Int -> QClass -> ShowS
[QClass] -> ShowS
QClass -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [QClass] -> ShowS
$cshowList :: [QClass] -> ShowS
show :: QClass -> String
$cshow :: QClass -> String
showsPrec :: Int -> QClass -> ShowS
$cshowsPrec :: Int -> QClass -> ShowS
Show)