module Language.Haskell.ReverseAD.TH.Source where
import Language.Haskell.TH (Name, Lit, Pat, Type)
data Exp
= EVar Name
| ECon Name
| ELit Lit
| EApp Exp Exp
| ELam Pat Exp
| ETup [Exp]
| ECond Exp Exp Exp
| ELet [DecGroup] Exp
| ECase Exp [(Pat, Exp)]
| EList [Exp]
| ESig Exp Type
deriving (Int -> Exp -> ShowS
[Exp] -> ShowS
Exp -> String
(Int -> Exp -> ShowS)
-> (Exp -> String) -> ([Exp] -> ShowS) -> Show Exp
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Exp -> ShowS
showsPrec :: Int -> Exp -> ShowS
$cshow :: Exp -> String
show :: Exp -> String
$cshowList :: [Exp] -> ShowS
showList :: [Exp] -> ShowS
Show)
infixl `EApp`
data DecGroup
= DecVar Name (Maybe Type) Exp
| DecMutGroup [(Name, Maybe Type, Pat, Exp)]
deriving (Int -> DecGroup -> ShowS
[DecGroup] -> ShowS
DecGroup -> String
(Int -> DecGroup -> ShowS)
-> (DecGroup -> String) -> ([DecGroup] -> ShowS) -> Show DecGroup
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> DecGroup -> ShowS
showsPrec :: Int -> DecGroup -> ShowS
$cshow :: DecGroup -> String
show :: DecGroup -> String
$cshowList :: [DecGroup] -> ShowS
showList :: [DecGroup] -> ShowS
Show)