A substitution is just a map from names to types
Moduleth-desugar-1.17Haskell2010
Language.Haskell.TH.Desugar.Subst
Capture-avoiding substitutions on DTypes
- 2 types
- 6 values
- Packageth-desugar-1.17
- Exports8
- LanguageHaskell2010
- LicenceBSD-3-Clause
- SourceSubst.hs
Capture-avoiding substitution
5 declarationsCapture-avoiding substitution on types
Computes the union of two substitutions. Fails if both subsitutions map the same variable to different types.
Matching a type template against a type
2 declarationsmatchTy ign tmpl targ matches a type template tmpl against a type
target targ. This returns a Map from names of type variables in the
type template to types if the types indeed match up, or Nothing otherwise.
In the Just case, it is guaranteed that every type variable mentioned
in the template is mapped by the returned substitution.
The first argument ign tells matchTy whether to ignore kind signatures
in the template. A kind signature in the template might mean that a type
variable has a more restrictive kind than otherwise possible, and that
mapping that type variable to a type of a different kind could be disastrous.
So, if we don't ignore kind signatures, this function returns Nothing if
the template has a signature anywhere. If we do ignore kind signatures, it's
possible the returned map will be ill-kinded. Use at your own risk.