[project @ 2000-01-11 14:21:43 by sewardj]
[ghc-hetmet.git] / ghc / interpreter / link.h
index 228e5b4..d8d149c 100644 (file)
@@ -1,8 +1,10 @@
 
 extern Cell conCons;
 
-extern Name nameForce;
-extern Name nameRunIO;
+extern Name nameShow;
+extern Name namePutStr;
+extern Name nameRunIO_toplevel;
+
 
 /* The following data constructors are used to box unboxed
  * arguments and are treated differently by the code generator.
@@ -13,45 +15,31 @@ extern Name nameRunIO;
 
 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
+extern Name nameMkThreadId;  
+extern Name nameMkPrimMVar;  
 #ifdef PROVIDE_FOREIGN
 extern Name nameMkForeign;   
 #endif
 #ifdef PROVIDE_WEAK
 extern Name nameMkWeak;
 #endif
-#ifdef PROVIDE_CONCURRENT
-extern Name nameMkThreadId;  
-extern Name nameMkMVar;  
-#endif
+
 
 /* For every primitive type provided by the runtime system,
  * we construct a Haskell type using a declaration of the form:
@@ -60,40 +48,25 @@ extern Name nameMkMVar;
  */
 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
-Type typePrimArray;            
-Type typePrimByteArray;
-Type typeRef;                  
-Type typePrimMutableArray;     
-Type typePrimMutableByteArray; 
-#endif
+extern Type typePrimArray;            
+extern Type typePrimByteArray;
+extern Type typeRef;                  
+extern Type typePrimMutableArray;     
+extern Type typePrimMutableByteArray; 
 extern Type typeFloat;
 extern Type typeDouble;
-#ifdef PROVIDE_STABLE
 extern Type typeStable;
-#endif
+extern Type typeThreadId;
+extern Type typeMVar;
 #ifdef PROVIDE_WEAK
 extern Type typeWeak;
 #endif
 #ifdef PROVIDE_FOREIGN
 extern Type typeForeign;
 #endif
-#ifdef PROVIDE_CONCURRENT
-extern Type typeThreadId;
-extern Type typeMVar;
-#endif
 
 /* And a smaller number of types defined in plain Haskell */
 extern Type typeList;
@@ -104,17 +77,6 @@ extern Type typeST;
 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;
@@ -130,9 +92,7 @@ extern Name nameSel;
 extern Name nameEq;     
 extern Name namePMFail;
 extern Name nameEqChar;
-extern Name nameEqInt;
 extern Name nameEqInteger;
-extern Name nameEqDouble;
 extern Name namePmInt;
 extern Name namePmInteger;
 extern Name namePmDouble;
@@ -141,6 +101,10 @@ extern Name namePmSubtract;
 extern Name namePmFromInteger;
 extern Name nameMkIO;
 extern Name nameUnpackString;
+extern Name namePrimSeq;
+extern Name nameMap;
+extern Name nameMinus;
+
 
 extern Type  arrow;                     /* mkOffset(0) -> mkOffset(1)      */
 extern Type  listof;                    /* [ mkOffset(0) ]                 */
@@ -149,3 +113,16 @@ extern Cell  predFractional;            /* Fractional (mkOffset(0))        */
 extern Cell  predIntegral;              /* Integral (mkOffset(0))          */
 extern Cell  predMonad;                 /* Monad (mkOffset(0))             */
 
+
+extern Type  arrow;                     /* mkOffset(0) -> mkOffset(1)      */
+extern       Type  boundPair;;                 /* (mkOffset(0),mkOffset(0))       */
+extern       Type  listof;;                    /* [ mkOffset(0) ]                 */
+extern       Type  typeVarToVar;;              /* mkOffset(0) -> mkOffset(0)      */
+
+extern       Cell  predNum;;                   /* Num (mkOffset(0))               */
+extern       Cell  predFractional;;            /* Fractional (mkOffset(0))        */
+extern       Cell  predIntegral;;              /* Integral (mkOffset(0))          */
+extern       Kind  starToStar;;                /* Type -> Type                    */
+extern       Cell  predMonad;;                 /* Monad (mkOffset(0))             */
+
+