--------------------------------
-- Instantiation
- tcInstTyVar, tcInstType, tcInstTyVars, tcInstBoxy, tcInstBoxyTyVar,
+ tcInstTyVar, tcInstType, tcInstTyVars, tcInstBoxyTyVar,
tcInstSigTyVars, zonkSigTyVar,
tcInstSkolTyVar, tcInstSkolTyVars, tcInstSkolType,
tcSkolSigType, tcSkolSigTyVars,
import TcType ( TcType, TcThetaType, TcTauType, TcPredType,
TcTyVarSet, TcKind, TcTyVar, TcTyVarDetails(..),
MetaDetails(..), SkolemInfo(..), BoxInfo(..),
- BoxyTyVar, BoxyType, BoxyThetaType, BoxySigmaType,
- UserTypeCtxt(..),
+ BoxyTyVar, BoxyType, UserTypeCtxt(..),
isMetaTyVar, isSigTyVar, metaTvRef,
tcCmpPred, isClassPred, tcGetTyVar,
tcSplitPhiTy, tcSplitPredTy_maybe, tcSplitAppTy_maybe,
; ref <- newMutVar Flexi ;
; let name = mkSysTvName uniq fs
fs = case box_info of
- BoxTv -> FSLIT("bx")
+ BoxTv -> FSLIT("t")
TauTv -> FSLIT("t")
SigTv _ -> FSLIT("a")
+ -- We give BoxTv and TauTv the same string, because
+ -- otherwise we get user-visible differences in error
+ -- messages, which are confusing. If you want to see
+ -- the box_info of each tyvar, use -dppr-debug
; return (mkTcTyVar name kind (MetaTv box_info ref)) }
instMetaTyVar :: BoxInfo -> TyVar -> TcM TcTyVar
tcInstBoxyTyVar :: TyVar -> TcM BoxyTyVar
-- Instantiate with a BOXY type variable
tcInstBoxyTyVar tyvar = instMetaTyVar BoxTv tyvar
-
-tcInstBoxy :: TcType -> TcM ([BoxyTyVar], BoxyThetaType, BoxySigmaType)
--- tcInstType instantiates the outer-level for-alls of a TcType with
--- fresh BOXY type variables, splits off the dictionary part,
--- and returns the pieces.
-tcInstBoxy ty = tcInstType (mapM tcInstBoxyTyVar) ty
\end{code}