% (c) The GRASP Project, Glasgow University, 1992-2002
%
\begin{code}
+{-# OPTIONS -w #-}
+-- The above warning supression flag is a temporary kludge.
+-- While working on this module you are encouraged to remove it and fix
+-- any warnings in the module. See
+-- http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings
+-- for details
+
module TcRnTypes(
TcRnIf, TcRn, TcM, RnM, IfM, IfL, IfG, -- The monad is opaque outside this module
TcRef,
represent implication constraints 'forall tvs. (reft, given) => wanted'
and equality constraints 'co :: ty1 ~ ty2'.
+NB: Equalities occur in two flavours:
+
+ (1) Dict {tci_pred = EqPred ty1 ty2}
+ (2) EqInst {tci_left = ty1, tci_right = ty2, tci_co = coe}
+
+The former arises from equalities in contexts, whereas the latter is used
+whenever the type checker introduces an equality (e.g., during deferring
+unification).
+
+I am not convinced that this duplication is necessary or useful! -=chak
+
\begin{code}
data Inst
= Dict {