extern Cell conCons;
-extern Name nameForce;
extern Name nameRunIO;
/* The following data constructors are used to box unboxed
extern Name nameMkC;
extern Name nameMkI;
-#ifdef PROVIDE_INT64
-extern Name nameMkInt64;
-#endif
-#ifdef PROVIDE_WORD
extern Name nameMkW;
-#endif
-#ifdef PROVIDE_ADDR
extern Name nameMkA;
-#endif
extern Name nameMkF;
extern Name nameMkD;
-#ifdef PROVIDE_STABLE
extern Name nameMkStable;
-#endif
/* The following data constructors are used to make boxed but
* unpointed values pointed and require no special treatment
* by the code generator.
*/
-#ifdef PROVIDE_INTEGER
extern Name nameMkInteger;
-#endif
-#ifdef PROVIDE_ARRAY
extern Name nameMkPrimArray;
extern Name nameMkPrimByteArray;
extern Name nameMkRef;
extern Name nameMkPrimMutableArray;
extern Name nameMkPrimMutableByteArray;
-#endif
#ifdef PROVIDE_FOREIGN
extern Name nameMkForeign;
#endif
*/
extern Type typeChar;
extern Type typeInt;
-#ifdef PROVIDE_INT64
-extern Type typeInt64;
-#endif
-#ifdef PROVIDE_INTEGER
extern Type typeInteger;
-#endif
-#ifdef PROVIDE_WORD
extern Type typeWord;
-#endif
-#ifdef PROVIDE_ADDR
extern Type typeAddr;
-#endif
-#ifdef PROVIDE_ARRAY
extern Type typePrimArray;
extern Type typePrimByteArray;
extern Type typeRef;
extern Type typePrimMutableArray;
extern Type typePrimMutableByteArray;
-#endif
extern Type typeFloat;
extern Type typeDouble;
-#ifdef PROVIDE_STABLE
extern Type typeStable;
-#endif
#ifdef PROVIDE_WEAK
extern Type typeWeak;
#endif
extern Type typeIO;
extern Type typeException;
-/* copied out of K&R2, Appendix A */
-#define cat(x,y) x ## y
-#define xcat(x,y) cat(x,y)
-
-#ifdef BIGNUMTYPE
-#define typeBignum xcat(type,BIGNUMTYPE)
-#define nameMkBignum xcat(nameMk,BIGNUMTYPE)
-#else
-#warning BIGNUMTYPE undefined
-#endif
-
/* used while desugaring */
extern Name nameId;
extern Name nameOtherwise;
extern Name namePmSubtract;
extern Name namePmFromInteger;
extern Name nameMkIO;
+extern Name nameRunST;
extern Name nameUnpackString;
+extern Name namePrimSeq;
+extern Name nameMap;
+extern Name nameMinus;
+
extern Type arrow; /* mkOffset(0) -> mkOffset(1) */
extern Type listof; /* [ mkOffset(0) ] */
extern Cell predIntegral;; /* Integral (mkOffset(0)) */
extern Kind starToStar;; /* Type -> Type */
extern Cell predMonad;; /* Monad (mkOffset(0)) */
+
+