HORIZON HASKELLDocslts/ghc-9.14.x45dd5372026-10-11Search names, modules, packages, or :: a typeCtrl K

GHC 9.14.1 · lts/ghc-9.14.x · 45dd537 · 2026-10-11

Moduleth-desugar-1.19Haskell2010

Language.Haskell.TH.Desugar.Subst.Capturing

Substitutions on DTypes that do not avoid capture. (For capture-avoiding substitution functions, use Language.Haskell.TH.Desugar.Subst instead.)

  • 2 types
  • 7 values
  • Packageth-desugar-1.19
  • Exports9
  • LanguageHaskell2010
  • LicenceBSD-3-Clause
  • SourceCapturing.hs

Non–capture-avoiding substitution

6 declarations

Matching a type template against a type

2 declarations
valuematchTy :: IgnoreKinds -> DType -> DType -> Maybe DSubst
#

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