| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
GHC.Tc.Solver.Flatten
Synopsis
- data FlattenMode
- flatten :: FlattenMode -> CtEvidence -> TcType -> TcS (Xi, TcCoercion)
- flattenKind :: CtLoc -> CtFlavour -> TcType -> TcS (Xi, TcCoercionN)
- flattenArgsNom :: CtEvidence -> TyCon -> [TcType] -> TcS ([Xi], [TcCoercion], TcCoercionN)
- rewriteTyVar :: TcTyVar -> TcS TcType
- flattenType :: CtLoc -> TcType -> TcS TcType
- unflattenWanteds :: Cts -> Cts -> TcS Cts
Documentation
data FlattenMode #
Constructors
| FM_FlattenAll | |
| FM_SubstOnly |
Instances
| Outputable FlattenMode # | |
Defined in GHC.Tc.Solver.Flatten | |
flatten :: FlattenMode -> CtEvidence -> TcType -> TcS (Xi, TcCoercion) #
See Note [Flattening].
If (xi, co) <- flatten mode ev ty, then co :: xi ~r ty
where r is the role in ev. If mode is FM_FlattenAll,
then xi is almost function-free (Note [Almost function-free]
in GHC.Tc.Types).
flattenKind :: CtLoc -> CtFlavour -> TcType -> TcS (Xi, TcCoercionN) #
flattenArgsNom :: CtEvidence -> TyCon -> [TcType] -> TcS ([Xi], [TcCoercion], TcCoercionN) #
rewriteTyVar :: TcTyVar -> TcS TcType #