import Type ( PredType(..), ThetaType,
splitPredTy_maybe,
splitForAllTys, splitSigmaTy, splitRhoTy,
- isDictTy, splitTyConApp_maybe, splitFunTy_maybe,
+ isPredTy, isDictTy, splitTyConApp_maybe, splitFunTy_maybe,
predRepTy, isUTyVar
)
import Var ( TyVar, tyVarKind )
-- so we mustn't use splitFunTys here.
= maybeParen ctxt_prec fUN_PREC $
sep [ ppr_ty fUN_PREC ty1
- , ptext SLIT("->") <+> ppr_ty tOP_PREC ty2
+ , ptext arrow <+> ppr_ty tOP_PREC ty2
]
+ where arrow | isPredTy ty1 = SLIT("=>")
+ | otherwise = SLIT("->")
ppr_ty ctxt_prec (AppTy ty1 ty2)
= maybeParen ctxt_prec tYCON_PREC $
|| utc == addrPrimTyConKey) then 'i'
else if utc == floatPrimTyConKey then 'f'
else if utc == doublePrimTyConKey then 'd'
- else if isPrimTyCon tycon {- array, we hope -} then 'A'
+ else if isPrimTyCon tycon {- array, we hope -} then 'A' -- Bogus
else if isEnumerationTyCon tycon then 'E'
else if isTupleTyCon tycon then 'T'
else if maybeToBool (maybeTyConSingleCon tycon) then 'S'