, liftedApplyVar :: Var
, replicatePDVar :: Var
, emptyPDVar :: Var
- , packPDVar :: Var
, packByTagPDVar :: Var
, combinePDVars :: Array Int Var
, scalarClass :: Class
liftedApplyVar <- externalVar dph_Closure (fsLit "liftedApply")
replicatePDVar <- externalVar dph_PArray (fsLit "replicatePD")
emptyPDVar <- externalVar dph_PArray (fsLit "emptyPD")
- packPDVar <- externalVar dph_PArray (fsLit "packPD")
packByTagPDVar <- externalVar dph_PArray (fsLit "packByTagPD")
combines <- mapM (externalVar dph_PArray)
, liftedApplyVar = liftedApplyVar
, replicatePDVar = replicatePDVar
, emptyPDVar = emptyPDVar
- , packPDVar = packPDVar
, packByTagPDVar = packByTagPDVar
, combinePDVars = combinePDVars
, scalarClass = scalarClass
pdataReprTyCon, pdataReprDataCon, mkVScrut,
prDictOfType, prDFunOfTyCon,
paDictArgType, paDictOfType, paDFunType,
- paMethod, wrapPR, replicatePD, emptyPD, packPD, packByTagPD,
+ paMethod, wrapPR, replicatePD, emptyPD, packByTagPD,
combinePD,
liftPD,
zipScalars, scalarClosure,
emptyPD :: Type -> VM CoreExpr
emptyPD = paMethod emptyPDVar "emptyPD"
-packPD :: Type -> CoreExpr -> CoreExpr -> CoreExpr -> VM CoreExpr
-packPD ty xs len sel = liftM (`mkApps` [xs, len, sel])
- (paMethod packPDVar "packPD" ty)
-
packByTagPD :: Type -> CoreExpr -> CoreExpr -> CoreExpr -> CoreExpr
-> VM CoreExpr
packByTagPD ty xs len tags t