BuildTyCl

ghc-7.8.2: The GHC API

Safe Haskell | None
Language | Haskell98

BuildTyCl

Synopsis

- buildSynTyCon :: Name -> [TyVar] -> [Role] -> SynTyConRhs -> Kind -> TyConParent -> TcRnIf m n TyCon
- buildAlgTyCon :: Name -> [TyVar] -> [Role] -> Maybe CType -> ThetaType -> AlgTyConRhs -> RecFlag -> Bool -> Bool -> TyConParent -> TyCon
- buildDataCon :: FamInstEnvs -> Name -> Bool -> [HsBang] -> [Name] -> [TyVar] -> [TyVar] -> [(TyVar, Type)] -> ThetaType -> [Type] -> Type -> TyCon -> TcRnIf m n DataCon
- buildPatSyn :: Name -> Bool -> Bool -> [Var] -> [TyVar] -> [TyVar] -> ThetaType -> ThetaType -> Type -> TyVar -> TcRnIf m n PatSyn
- mkPatSynMatcherId :: Name -> [Var] -> [TyVar] -> [TyVar] -> ThetaType -> ThetaType -> Type -> TyVar -> TcRnIf n m (Id, Type, Type)
- mkPatSynWrapperId :: Name -> [Var] -> [TyVar] -> ThetaType -> Type -> TcRnIf n m Id
- type TcMethInfo = (Name, DefMethSpec, Type)
- buildClass :: Bool -> Name -> [TyVar] -> [Role] -> ThetaType -> [FunDep TyVar] -> [ClassATItem] -> [TcMethInfo] -> ClassMinimalDef -> RecFlag -> TcRnIf m n Class
- distinctAbstractTyConRhs :: AlgTyConRhs
- totallyAbstractTyConRhs :: AlgTyConRhs
- mkNewTyConRhs :: Name -> TyCon -> DataCon -> TcRnIf m n AlgTyConRhs
- mkDataTyConRhs :: [DataCon] -> AlgTyConRhs
- newImplicitBinder :: Name -> (OccName -> OccName) -> TcRnIf m n Name

# Documentation

buildSynTyCon Source

Arguments

:: Name |
-> [TyVar] |
-> [Role] |
-> SynTyConRhs |
-> Kind | Kind of the RHS
-> TyConParent |
-> TcRnIf m n TyCon |

buildAlgTyCon Source

Arguments

:: Name |
-> [TyVar] | Kind variables and type variables
-> [Role] |
-> Maybe CType |
-> ThetaType | Stupid theta
-> AlgTyConRhs |
-> RecFlag |
-> Bool | True = this TyCon is promotable
-> Bool | True = was declared in GADT syntax
-> TyConParent |
-> TyCon |

buildDataCon :: FamInstEnvs -> Name -> Bool -> [HsBang] -> [Name] -> [TyVar] -> [TyVar] -> [(TyVar, Type)] -> ThetaType -> [Type] -> Type -> TyCon -> TcRnIf m n DataCon Source

buildPatSyn :: Name -> Bool -> Bool -> [Var] -> [TyVar] -> [TyVar] -> ThetaType -> ThetaType -> Type -> TyVar -> TcRnIf m n PatSyn Source

mkPatSynMatcherId :: Name -> [Var] -> [TyVar] -> [TyVar] -> ThetaType -> ThetaType -> Type -> TyVar -> TcRnIf n m (Id, Type, Type) Source

mkPatSynWrapperId :: Name -> [Var] -> [TyVar] -> ThetaType -> Type -> TcRnIf n m Id Source

type TcMethInfo = (Name, DefMethSpec, Type) Source

buildClass :: Bool -> Name -> [TyVar] -> [Role] -> ThetaType -> [FunDep TyVar] -> [ClassATItem] -> [TcMethInfo] -> ClassMinimalDef -> RecFlag -> TcRnIf m n Class Source

distinctAbstractTyConRhs :: AlgTyConRhs Source

totallyAbstractTyConRhs :: AlgTyConRhs Source

mkNewTyConRhs :: Name -> TyCon -> DataCon -> TcRnIf m n AlgTyConRhs Source

Monadic because it makes a Name for the coercion TyCon We pass the Name of the parent TyCon, as well as the TyCon itself, because the latter is part of a knot, whereas the former is not.

mkDataTyConRhs :: [DataCon] -> AlgTyConRhs Source

newImplicitBinder :: Name -> (OccName -> OccName) -> TcRnIf m n Name Source