import StgSyn
import Bag ( Bag, emptyBag, isEmptyBag, snocBag )
import StgSyn
import Bag ( Bag, emptyBag, isEmptyBag, snocBag )
import VarSet
import DataCon ( DataCon, dataConArgTys, dataConRepType )
import PrimOp ( primOpType )
import Literal ( literalType, Literal )
import Maybes ( catMaybes )
import VarSet
import DataCon ( DataCon, dataConArgTys, dataConRepType )
import PrimOp ( primOpType )
import Literal ( literalType, Literal )
import Maybes ( catMaybes )
import ErrUtils ( ErrMsg, Message, addErrLocHdrLine, pprBagOfErrors, dontAddErrLoc )
import Type ( mkFunTys, splitFunTys, splitAlgTyConApp_maybe,
isUnLiftedType, isTyVarTy, splitForAllTys, Type
import ErrUtils ( ErrMsg, Message, addErrLocHdrLine, pprBagOfErrors, dontAddErrLoc )
import Type ( mkFunTys, splitFunTys, splitAlgTyConApp_maybe,
isUnLiftedType, isTyVarTy, splitForAllTys, Type