Safe Haskell | None |
---|
- data Kind
- data KBase
- data MetaVar = MetaVar {}
- data MetaVarType
- data Pred
- type Preds = [Pred]
- data Qual t = [Pred] :=> t
- data Tycon = Tycon {}
- data Type
- data Tyvar = Tyvar {}
- kindStar :: Kind
- kindFunRet :: Kind
- kindUTuple :: Kind
- unfoldKind :: Kind -> [Kind]
- fn :: Type -> Type -> Type
- fromTAp :: Type -> (Type, [Type])
- fromTArrow :: Type -> ([Type], Type)
- type Sigma' = Sigma
- type Tau' = Tau
- type Rho' = Rho
- type Sigma = Type
- type Rho = Type
- type Tau = Type
- type SkolemTV = Tyvar
- type BoundTV = Tyvar
- type Preds = [Pred]
- data Constraint = Equality {}
- applyTyvarMap :: [(Tyvar, Type)] -> Type -> Type
- applyTyvarMapQT :: [(Tyvar, Type)] -> Qual Type -> Qual Type
- typeOfType :: Type -> (MetaVarType, Bool)
- fromType :: Sigma -> ([Tyvar], [Pred], Type)
- isTau :: Type -> Bool
- isTau' :: Type -> Bool
- isBoxy :: Type -> Bool
- isRho' :: Type -> Bool
- isRho :: Type -> Bool
- isBoxyMetaVar :: MetaVar -> Bool
- extractTyVar :: Monad m => Type -> m Tyvar
- extractMetaVar :: Monad m => Type -> m MetaVar
- extractBox :: Monad m => Type -> m MetaVar
- newtype UnVarOpt = UnVarOpt {}
- flattenType :: (MonadIO m, UnVar t) => t -> m t
- class UnVar t where
- followTaus :: MonadIO m => Type -> m Type
- findType :: MonadIO m => Type -> m Type
- readMetaVar :: MonadIO m => MetaVar -> m (Maybe Type)
- freeMetaVars :: Type -> Set MetaVar
- data Rule
- data CoerceTerm
- = CTId
- | CTAp [Type]
- | CTAbs [Tyvar]
- | CTFun CoerceTerm
- | CTCompose CoerceTerm CoerceTerm
- ptrans :: Bool -> (a -> a) -> a -> a
- ctFun :: CoerceTerm -> CoerceTerm
- ctAbs :: [Tyvar] -> CoerceTerm
- ctAp :: [Type] -> CoerceTerm
- ctId :: CoerceTerm
- composeCoerce :: CoerceTerm -> CoerceTerm -> CoerceTerm
- prettyPrintType :: DocLike d => Type -> d
- tForAll :: [Tyvar] -> Qual Type -> Type
- tList :: Type
- data Constraint = Equality {}
- type Class = Name
- data Kindvar = Kindvar {
- kvarUniq :: !Int
- kvarRef :: !(IORef (Maybe Kind))
- kvarConstraint :: !KindConstraint
- tTTuple :: [Type] -> Type
- tTTuple' :: [Type] -> Type
- tAp :: Type -> Type -> Type
- tArrow :: Type
- tyvar :: Name -> Kind -> Tyvar
Documentation
metavars are used in type checking
data MetaVarType Source
unfoldKind :: Kind -> [Kind]Source
fromTArrow :: Type -> ([Type], Type)Source
data Constraint Source
typeOfType :: Type -> (MetaVarType, Bool)Source
isBoxyMetaVar :: MetaVar -> BoolSource
extractTyVar :: Monad m => Type -> m TyvarSource
extractMetaVar :: Monad m => Type -> m MetaVarSource
extractBox :: Monad m => Type -> m MetaVarSource
flattenType :: (MonadIO m, UnVar t) => t -> m tSource
followTaus :: MonadIO m => Type -> m TypeSource
freeMetaVars :: Type -> Set MetaVarSource
data CoerceTerm Source
ctFun :: CoerceTerm -> CoerceTermSource
ctAbs :: [Tyvar] -> CoerceTermSource
ctAp :: [Type] -> CoerceTermSource
prettyPrintType :: DocLike d => Type -> dSource
data Constraint Source
Kindvar | |
|
tAp :: Type -> Type -> TypeSource
Type application, enforcing the invariant that there be no fully-applied tArrow
s
The (->)
type constructor. Invariant: tArrow
shall not be fully applied. To this end, see tAp
.