stringTyCon,
trueDataCon,
unitTy,
+ voidTy, voidTyCon,
wordDataCon,
wordTy,
wordTyCon
NewOrData(..), TyCon
)
import Type ( mkTyConTy, applyTyCon, mkSynTy, mkSigmaTy,
- mkFunTys, maybeAppDataTyCon,
+ mkFunTys, maybeAppDataTyConExpandingDicts,
GenType(..), ThetaType(..), TauType(..) )
import TyVar ( tyVarKind, alphaTyVar, betaTyVar )
import Unique
%************************************************************************
\begin{code}
+-- The Void type is represented as a data type with no constructors
+voidTy = mkTyConTy voidTyCon
+
+voidTyCon = pcDataTyCon voidTyConKey pRELUDE_BUILTIN SLIT("Void") [] []
+\end{code}
+
+\begin{code}
charTy = mkTyConTy charTyCon
charTyCon = pcDataTyCon charTyConKey pRELUDE_BUILTIN SLIT("Char") [] [charDataCon]
Type) -- type of state pair
getStatePairingConInfo prim_ty
- = case (maybeAppDataTyCon prim_ty) of
+ = case (maybeAppDataTyConExpandingDicts prim_ty) of
Nothing -> panic "getStatePairingConInfo:1"
Just (prim_tycon, tys_applied, _) ->
let
(tvs, theta, tau) = splitSigmaTy ty
isLiftTy ty
- = case maybeAppDataTyCon tau of
+ = case (maybeAppDataTyConExpandingDicts tau) of
Just (tycon, tys, _) -> tycon == liftTyCon
Nothing -> False
where