import TypeRep ( funTyCon )
import Type ( Type )
import TysPrim
-import TysWiredIn ( unitTyCon, tupleTyCon,
+import TysWiredIn ( unitTyCon, unitDataCon,
+ tupleTyCon,
intTyCon, intTyConName,
doubleTyCon, doubleTyConName,
boolTyCon, boolTyConName, trueDataCon, falseDataCon,
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")
+ lengthPAVar <- externalVar nDP_PARRAY FSLIT("lengthPA#")
+ replicatePAVar <- externalVar nDP_PARRAY FSLIT("replicatePA#")
emptyPAVar <- externalVar nDP_PARRAY FSLIT("emptyPA")
- packPAVar <- externalVar nDP_PARRAY FSLIT("packPA")
+ packPAVar <- externalVar nDP_PARRAY FSLIT("packPA#")
combines <- mapM (externalVar nDP_PARRAY)
- [mkFastString ("combine" ++ show i ++ "PA")
+ [mkFastString ("combine" ++ show i ++ "PA#")
| i <- [2..mAX_NDP_COMBINE]]
let combinePAVars = listArray (2, mAX_NDP_COMBINE) combines
(umods, ufs, vmods, vfs) = unzip4 preludeVars
defaultDataConWorkers :: [DataCon]
-defaultDataConWorkers = [trueDataCon, falseDataCon]
+defaultDataConWorkers = [trueDataCon, falseDataCon, unitDataCon]
preludeVars :: [(Module, FastString, Module, FastString)]
preludeVars
= [
- mk gHC_PARR FSLIT("mapP") nDP_COMBINATORS FSLIT("mapPA")
- , mk gHC_PARR FSLIT("zipWithP") nDP_COMBINATORS FSLIT("zipWithPA")
+ mk gHC_PARR FSLIT("mapP") nDP_COMBINATORS FSLIT("mapPA")
+ , mk gHC_PARR FSLIT("zipWithP") nDP_COMBINATORS FSLIT("zipWithPA")
+ , mk gHC_PARR FSLIT("zipP") nDP_COMBINATORS FSLIT("zipPA")
+ , mk gHC_PARR FSLIT("filterP") nDP_COMBINATORS FSLIT("filterPA")
+ , mk gHC_PARR FSLIT("lengthP") nDP_COMBINATORS FSLIT("lengthPA")
+ , mk gHC_PARR FSLIT("replicateP") nDP_COMBINATORS FSLIT("replicatePA")
+ , mk gHC_PARR FSLIT("!:") nDP_COMBINATORS FSLIT("indexPA")
+ , mk gHC_PARR FSLIT("crossMapP") nDP_COMBINATORS FSLIT("crossMapPA")
+ , mk gHC_PARR FSLIT("singletonP") nDP_COMBINATORS FSLIT("singletonPA")
+ , mk gHC_PARR FSLIT("concatP") nDP_COMBINATORS FSLIT("concatPA")
, mk nDP_PRELUDE_INT FSLIT("plus") nDP_PRELUDE_INT FSLIT("plusV")
, mk nDP_PRELUDE_INT FSLIT("minus") nDP_PRELUDE_INT FSLIT("minusV")
-- FIXME: temporary
, mk nDP_PRELUDE_PARR FSLIT("fromPArrayP") nDP_PRELUDE_PARR FSLIT("fromPArrayPA")
+ , mk nDP_PRELUDE_PARR FSLIT("toPArrayP") nDP_PRELUDE_PARR FSLIT("toPArrayPA")
+ , mk nDP_PRELUDE_PARR FSLIT("fromNestedPArrayP") nDP_PRELUDE_PARR FSLIT("fromNestedPArrayPA")
]
where
mk = (,,,)
initBuiltinDataCons bi = [(dataConName dc, dc)| dc <- defaultDataCons]
defaultDataCons :: [DataCon]
-defaultDataCons = [trueDataCon, falseDataCon]
+defaultDataCons = [trueDataCon, falseDataCon, unitDataCon]
initBuiltinDicts :: [(Name, Module, FastString)] -> DsM [(Name, Var)]
initBuiltinDicts ps