Class

ghc-8.0.0.20160204: The GHC API

Safe Haskell | None
Language | Haskell2010

Class

Synopsis

- 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

data Class Source

Instances

Eq Class |
Methods (==) :: Class -> Class -> Bool (/=) :: Class -> Class -> Bool
Data Class |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Class -> c Class Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Class Source toConstr :: Class -> Constr Source dataTypeOf :: Class -> DataType Source dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c Class) Source dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Class) Source gmapT :: (forall b. Data b => b -> b) -> Class -> Class Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Class -> r Source gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Class -> r Source gmapQ :: (forall d. Data d => d -> u) -> Class -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> Class -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> Class -> m Class Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Class -> m Class Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Class -> m Class Source
Ord Class |
Methods compare :: Class -> Class -> Ordering (<) :: Class -> Class -> Bool (<=) :: Class -> Class -> Bool (>) :: Class -> Class -> Bool (>=) :: Class -> Class -> Bool max :: Class -> Class -> Class min :: Class -> Class -> Class
Outputable Class |
Methods ppr :: Class -> SDoc Source pprPrec :: Rational -> Class -> SDoc Source
Uniquable Class |
Methods getUnique :: Class -> Unique Source
NamedThing Class |
Methods getOccName :: Class -> OccName Source getName :: Class -> Name Source

type ClassOpItem = (Id, DefMethInfo) Source

data ClassATItem Source

Constructors

ATI TyCon (Maybe (Type, SrcSpan)) |

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`.

type FunDep a = ([a], [a]) Source

pprFundeps :: Outputable a => [FunDep a] -> SDoc Source

pprFunDep :: 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

classKey :: Class -> Unique Source

className :: Class -> Name Source

classATs :: Class -> [TyCon] 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

classTvsFds :: Class -> ([TyVar], [FunDep TyVar]) Source

classSCTheta :: Class -> [PredType] Source

classAllSelIds :: Class -> [Id] Source

classSCSelId :: Class -> Int -> Id Source

classMinimalDef :: Class -> ClassMinimalDef 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!