The following patches are for ghc/interpreter, and fix some problems due to the recent change in Weak/Foreign stuff. --Jeff In ghc/includes: *** Assembler.h 1998/12/07 21:33:20 1.1 --- Assembler.h 1998/12/07 21:33:47 *************** *** 118,123 **** --- 118,124 ---- PTR_REP = 'P', ALPHA_REP = 'a', /* a */ BETA_REP = 'b', /* b */ + GAMMA_REP = 'c', /* c */ BOOL_REP = 'B', /* Bool */ IO_REP = 'i', /* IO a */ HANDLER_REP = 'H', /* Exception -> IO a */ In ghc/interpreter: =================================================================== RCS file: RCS/type.c,v retrieving revision 1.1 diff -c -r1.1 type.c *** type.c 1998/12/08 17:28:42 1.1 --- type.c 1998/12/08 17:30:23 *************** *** 2347,2352 **** --- 2347,2353 ---- static Type stateVar = NIL; static Type alphaVar = NIL; static Type betaVar = NIL; + static Type gammaVar = NIL; static Int nextVar = 0; static Void clearTyVars( void ) *************** *** 2381,2386 **** --- 2382,2395 ---- return betaVar; } + static Type mkGammaVar( void ) + { + if (isNull(gammaVar)) { + gammaVar = mkOffset(nextVar++); + } + return gammaVar; + } + static Type local basicType(k) Char k; { switch (k) { *************** *** 2445,2450 **** --- 2454,2461 ---- return mkAlphaVar(); /* polymorphic */ case BETA_REP: return mkBetaVar(); /* polymorphic */ + case GAMMA_REP: + return mkGammaVar(); /* polymorphic */ default: printf("Kind: '%c'\n",k); internal("basicType"); In ghc/lib/std: *** PrelHandle.lhs 1998/12/07 22:11:22 1.1 --- PrelHandle.lhs 1998/12/08 17:45:51 *************** *** 47,58 **** #define CCALL(fun) _ccall_ fun #define const_BUFSIZ ``BUFSIZ'' #define primPackString #ifndef __PARALLEL_HASKELL__ #define FILE_OBJECT ForeignObj #else #define FILE_OBJECT Addr #endif - #endif \end{code} --- 47,59 ---- #define CCALL(fun) _ccall_ fun #define const_BUFSIZ ``BUFSIZ'' #define primPackString + #endif + #ifndef __PARALLEL_HASKELL__ #define FILE_OBJECT ForeignObj #else #define FILE_OBJECT Addr #endif \end{code} *************** *** 151,158 **** freeFileObject :: ForeignObj -> IO () freeFileObject fo = CCALL(freeFileObject) fo #else ! foreign import stdcall "./libHS_cbits.dll" "freeStdFileObject" freeStdFileObject :: ForeignObj -> IO () ! foreign import stdcall "./libHS_cbits.dll" "freeFileObject" freeFileObject :: ForeignObj -> IO () #endif \end{code} --- 152,159 ---- freeFileObject :: ForeignObj -> IO () freeFileObject fo = CCALL(freeFileObject) fo #else ! foreign import stdcall "libHS_cbits.so" "freeStdFileObject" freeStdFileObject :: ForeignObj -> IO () ! foreign import stdcall "libHS_cbits.so" "freeFileObject" freeFileObject :: ForeignObj -> IO () #endif \end{code}