VM,
noV, tryV, maybeV, traceMaybeV, orElseV, fixV, localV, closedV, initV,
+ liftDs,
cloneName, cloneId,
newExportedVar, newLocalVar, newDummyVar, newTyVar,
parrayTyCon :: TyCon
, paTyCon :: TyCon
, paDataCon :: DataCon
+ , preprTyCon :: TyCon
+ , embedTyCon :: TyCon
+ , embedDataCon :: DataCon
+ , crossTyCon :: TyCon
+ , crossDataCon :: DataCon
+ , plusTyCon :: TyCon
+ , leftDataCon :: DataCon
+ , rightDataCon :: DataCon
, closureTyCon :: TyCon
, mkClosureVar :: Var
, applyClosureVar :: Var
= do
parrayTyCon <- dsLookupTyCon parrayTyConName
paTyCon <- dsLookupTyCon paTyConName
- let paDataCon = case tyConDataCons paTyCon of [dc] -> dc
+ let [paDataCon] = tyConDataCons paTyCon
+ preprTyCon <- dsLookupTyCon preprTyConName
+ embedTyCon <- dsLookupTyCon embedTyConName
+ let [embedDataCon] = tyConDataCons embedTyCon
+ crossTyCon <- dsLookupTyCon crossTyConName
+ let [crossDataCon] = tyConDataCons crossTyCon
+ plusTyCon <- dsLookupTyCon plusTyConName
+ let [leftDataCon, rightDataCon] = tyConDataCons plusTyCon
closureTyCon <- dsLookupTyCon closureTyConName
mkClosureVar <- dsLookupGlobalId mkClosureName
parrayTyCon = parrayTyCon
, paTyCon = paTyCon
, paDataCon = paDataCon
+ , preprTyCon = preprTyCon
+ , embedTyCon = embedTyCon
+ , embedDataCon = embedDataCon
+ , crossTyCon = crossTyCon
+ , crossDataCon = crossDataCon
+ , plusTyCon = plusTyCon
+ , leftDataCon = leftDataCon
+ , rightDataCon = rightDataCon
, closureTyCon = closureTyCon
, mkClosureVar = mkClosureVar
, applyClosureVar = applyClosureVar