Copyright | (c) 2013-2016 Galois, Inc. |
---|---|
License | BSD3 |
Maintainer | cryptol@galois.com |
Stability | provisional |
Portability | portable |
Safe Haskell | Safe |
Language | Haskell98 |
- data Subst = S {}
- emptySubst :: Subst
- singleSubst :: TVar -> Type -> Subst
- (@@) :: Subst -> Subst -> Subst
- defaultingSubst :: Subst -> Subst
- listSubst :: [(TVar, Type)] -> Subst
- isEmptySubst :: Subst -> Bool
- substToList :: Subst -> Maybe [(TVar, Type)]
- class FVS t where
- apSubstMaybe :: Subst -> Type -> Maybe Type
- class TVars t where
- defaultFreeVar :: TVar -> Type
- apSubstTypeMapKeys :: Subst -> TypeMap a -> TypeMap a
Documentation
singleSubst :: TVar -> Type -> Subst Source
defaultingSubst :: Subst -> Subst Source
listSubst :: [(TVar, Type)] -> Subst Source
Makes a substitution out of a list. WARNING: We do not validate the list in any way, so the caller should ensure that we end up with a valid (e.g., idempotent) substitution.
isEmptySubst :: Subst -> Bool Source
apSubstMaybe :: Subst -> Type -> Maybe Type Source
Apply a substitution. Returns Nothing
if nothing changed.
TVars DeclDef Source | |
TVars Decl Source | |
TVars DeclGroup Source | |
TVars Match Source | |
TVars Expr Source | |
TVars Type Source | |
TVars Schema Source | WARNING: This instance assumes that the quantified variables in the types in the substitution will not get captured by the quantified variables. This is reasonable because there should be no shadowing of quantified variables but, just in case, we make a sanity check and panic if somehow capture did occur. |
TVars Module Source | |
TVars ConstraintSource Source | |
TVars Error Source | |
TVars Warning Source | |
TVars DelayedCt Source | |
TVars HasGoal Source | |
TVars Goal Source | |
TVars Goals Source | |
TVars t => TVars [t] Source | |
TVars t => TVars (Maybe t) Source | |
TVars a => TVars (TypeMap a) Source | |
(TVars s, TVars t) => TVars (s, t) Source | |
(Functor m, TVars a) => TVars (List m a) Source |
defaultFreeVar :: TVar -> Type Source
Pick types for unconstrained unification variables.
apSubstTypeMapKeys :: Subst -> TypeMap a -> TypeMap a Source
Apply the substitution to the keys of a type map.