- parrayIntPrimTyCon <- externalTyCon nDP_PRIM FSLIT("PArray_Int#")
- parrayBoolPrimTyCon <- externalTyCon nDP_PRIM FSLIT("PArray_Bool#")
- closureTyCon <- externalTyCon nDP_CLOSURE FSLIT(":->")
-
- voidTyCon <- externalTyCon nDP_REPR FSLIT("Void")
- wrapTyCon <- externalTyCon nDP_REPR FSLIT("Wrap")
- enumerationTyCon <- externalTyCon nDP_REPR FSLIT("Enumeration")
- sum_tcs <- mapM (externalTyCon nDP_REPR)
- [mkFastString ("Sum" ++ show i) | i <- [2..mAX_NDP_SUM]]
-
- let sumTyCons = listArray (2, mAX_NDP_SUM) sum_tcs
-
- voidVar <- externalVar nDP_REPR FSLIT("void")
- mkPRVar <- externalVar nDP_PARRAY FSLIT("mkPR")
- mkClosureVar <- externalVar nDP_CLOSURE FSLIT("mkClosure")
- applyClosureVar <- externalVar nDP_CLOSURE FSLIT("$:")
- mkClosurePVar <- externalVar nDP_CLOSURE FSLIT("mkClosureP")
- applyClosurePVar <- externalVar nDP_CLOSURE FSLIT("$:^")
- replicatePAIntPrimVar <- externalVar nDP_PRIM FSLIT("replicatePA_Int#")
- upToPAIntPrimVar <- externalVar nDP_PRIM FSLIT("upToPA_Int#")
- selectPAIntPrimVar <- externalVar nDP_PRIM FSLIT("selectPA_Int#")
- truesPABoolPrimVar <- externalVar nDP_PRIM FSLIT("truesPA_Bool#")
- lengthPAVar <- externalVar nDP_PARRAY FSLIT("lengthPA#")
- replicatePAVar <- externalVar nDP_PARRAY FSLIT("replicatePA#")
- emptyPAVar <- externalVar nDP_PARRAY FSLIT("emptyPA")
- packPAVar <- externalVar nDP_PARRAY FSLIT("packPA#")
-
- combines <- mapM (externalVar nDP_PARRAY)
- [mkFastString ("combine" ++ show i ++ "PA#")
- | i <- [2..mAX_NDP_COMBINE]]
- let combinePAVars = listArray (2, mAX_NDP_COMBINE) combines
-
- liftingContext <- liftM (\u -> mkSysLocal FSLIT("lc") u intPrimTy)
+ closureTyCon <- externalTyCon dph_Closure (fsLit ":->")
+
+ voidTyCon <- externalTyCon dph_Repr (fsLit "Void")
+ wrapTyCon <- externalTyCon dph_Repr (fsLit "Wrap")
+ sel_tys <- mapM (externalType dph_Selector)
+ (numbered "Sel" 2 mAX_DPH_SUM)
+ sel_replicates <- mapM (externalFun dph_Selector)
+ (numbered "replicate" 2 mAX_DPH_SUM)
+ sel_picks <- mapM (externalFun dph_Selector)
+ (numbered "pick" 2 mAX_DPH_SUM)
+ sel_tags <- mapM (externalFun dph_Selector)
+ (numbered "tagsSel" 2 mAX_DPH_SUM)
+ sel_els <- mapM mk_elements
+ [(i,j) | i <- [2..mAX_DPH_SUM], j <- [0..i-1]]
+ sum_tcs <- mapM (externalTyCon dph_Repr)
+ (numbered "Sum" 2 mAX_DPH_SUM)
+
+ let selTys = listArray (2, mAX_DPH_SUM) sel_tys
+ selReplicates = listArray (2, mAX_DPH_SUM) sel_replicates
+ selPicks = listArray (2, mAX_DPH_SUM) sel_picks
+ selTagss = listArray (2, mAX_DPH_SUM) sel_tags
+ selEls = array ((2,0), (mAX_DPH_SUM, mAX_DPH_SUM)) sel_els
+ sumTyCons = listArray (2, mAX_DPH_SUM) sum_tcs
+
+ voidVar <- externalVar dph_Repr (fsLit "void")
+ pvoidVar <- externalVar dph_Repr (fsLit "pvoid")
+ fromVoidVar <- externalVar dph_Repr (fsLit "fromVoid")
+ punitVar <- externalVar dph_Repr (fsLit "punit")
+ closureVar <- externalVar dph_Closure (fsLit "closure")
+ applyVar <- externalVar dph_Closure (fsLit "$:")
+ liftedClosureVar <- externalVar dph_Closure (fsLit "liftedClosure")
+ 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)
+ [mkFastString ("combine" ++ show i ++ "PD")
+ | i <- [2..mAX_DPH_COMBINE]]
+ let combinePDVars = listArray (2, mAX_DPH_COMBINE) combines
+
+ scalarClass <- externalClass dph_Scalar (fsLit "Scalar")
+ scalar_map <- externalVar dph_Scalar (fsLit "scalar_map")
+ scalar_zip2 <- externalVar dph_Scalar (fsLit "scalar_zipWith")
+ scalar_zips <- mapM (externalVar dph_Scalar)
+ (numbered "scalar_zipWith" 3 mAX_DPH_SCALAR_ARGS)
+ let scalarZips = listArray (1, mAX_DPH_SCALAR_ARGS)
+ (scalar_map : scalar_zip2 : scalar_zips)
+ closures <- mapM (externalVar dph_Closure)
+ (numbered "closure" 1 mAX_DPH_SCALAR_ARGS)
+ let closureCtrFuns = listArray (1, mAX_DPH_COMBINE) closures
+
+ liftingContext <- liftM (\u -> mkSysLocal (fsLit "lc") u intPrimTy)