Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Synopsis
- rewrite :: CtEvidence -> TcType -> TcS (Reduction, RewriterSet)
- rewriteForErrors :: CtEvidence -> TcType -> TcS (Reduction, RewriterSet)
- rewriteArgsNom :: CtEvidence -> TyCon -> [TcType] -> TcS (Reductions, RewriterSet)
- rewriteType :: CtLoc -> TcType -> TcS TcType
Documentation
rewrite :: CtEvidence -> TcType -> TcS (Reduction, RewriterSet) Source #
See Note [Rewriting].
If (xi, co, rewriters) <- rewrite mode ev ty, then co :: xi ~r ty
where r is the role in ev
.
rewriters is the set of coercion holes that have been used to rewrite
See Note [Wanteds rewrite Wanteds] in GHC.Tc.Types.Constraint
rewriteForErrors :: CtEvidence -> TcType -> TcS (Reduction, RewriterSet) Source #
See Note [Rewriting]
This variant of rewrite
rewrites w.r.t. nominal equality only,
as this is better than full rewriting for error messages. Specifically,
we want to avoid unwrapping newtypes, as doing so can end up causing
an otherwise-unnecessary stack overflow.
rewriteArgsNom :: CtEvidence -> TyCon -> [TcType] -> TcS (Reductions, RewriterSet) Source #