Safe Haskell | None |
---|---|
Language | Haskell2010 |
- data Class
- type ClassOpItem = (Id, DefMethInfo)
- data ClassATItem = ATI TyCon (Maybe (Type, SrcSpan))
- type ClassMinimalDef = BooleanFormula Name
- type DefMethInfo = Maybe (Name, DefMethSpec Type)
- pprDefMethInfo :: DefMethInfo -> SDoc
- defMethSpecOfDefMeth :: DefMethInfo -> Maybe (DefMethSpec Type)
- type FunDep a = ([a], [a])
- pprFundeps :: Outputable a => [FunDep a] -> SDoc
- pprFunDep :: Outputable a => FunDep a -> SDoc
- mkClass :: [TyVar] -> [([TyVar], [TyVar])] -> [PredType] -> [Id] -> [ClassATItem] -> [ClassOpItem] -> ClassMinimalDef -> TyCon -> Class
- classTyVars :: Class -> [TyVar]
- classArity :: Class -> Arity
- classKey :: Class -> Unique
- className :: Class -> Name
- classATs :: Class -> [TyCon]
- classATItems :: Class -> [ClassATItem]
- classTyCon :: Class -> TyCon
- classMethods :: Class -> [Id]
- classOpItems :: Class -> [ClassOpItem]
- classBigSig :: Class -> ([TyVar], [PredType], [Id], [ClassOpItem])
- classExtraBigSig :: Class -> ([TyVar], [FunDep TyVar], [PredType], [Id], [ClassATItem], [ClassOpItem])
- classTvsFds :: Class -> ([TyVar], [FunDep TyVar])
- classSCTheta :: Class -> [PredType]
- classAllSelIds :: Class -> [Id]
- classSCSelId :: Class -> Int -> Id
- classMinimalDef :: Class -> ClassMinimalDef
- classHasFds :: Class -> Bool
- naturallyCoherentClass :: Class -> Bool
Documentation
type ClassOpItem = (Id, DefMethInfo) Source #
type ClassMinimalDef = BooleanFormula Name Source #
type DefMethInfo = Maybe (Name, DefMethSpec Type) Source #
pprDefMethInfo :: DefMethInfo -> SDoc Source #
defMethSpecOfDefMeth :: DefMethInfo -> Maybe (DefMethSpec Type) Source #
Convert a DefMethInfo
to a DefMethSpec
, which discards the name field in
the DefMeth
constructor of the DefMeth
.
pprFundeps :: Outputable a => [FunDep a] -> SDoc Source #
mkClass :: [TyVar] -> [([TyVar], [TyVar])] -> [PredType] -> [Id] -> [ClassATItem] -> [ClassOpItem] -> ClassMinimalDef -> TyCon -> Class Source #
classTyVars :: Class -> [TyVar] Source #
classArity :: Class -> Arity Source #
classATItems :: Class -> [ClassATItem] Source #
classTyCon :: Class -> TyCon Source #
classMethods :: Class -> [Id] Source #
classOpItems :: Class -> [ClassOpItem] Source #
classBigSig :: Class -> ([TyVar], [PredType], [Id], [ClassOpItem]) Source #
classExtraBigSig :: Class -> ([TyVar], [FunDep TyVar], [PredType], [Id], [ClassATItem], [ClassOpItem]) Source #
classSCTheta :: Class -> [PredType] Source #
classAllSelIds :: Class -> [Id] Source #
classHasFds :: Class -> Bool Source #
naturallyCoherentClass :: Class -> Bool Source #
If a class is "naturally coherent", then we needn't worry at all, in any way, about overlapping/incoherent instances. Just solve the thing!