+extern Inst addRecShowInst ( Class,Ext );
+extern Inst addRecEqInst ( Class,Ext );
+#endif
+extern List offsetTyvarsIn ( Type,List );
+
+
+extern List typeVarsIn ( Cell,List,List,List );
+extern List oclose ( List,List );
+extern List zonkTyvarsIn ( Type,List );
+extern Type zonkTyvar ( Int );
+extern Type zonkType ( Type,Int );
+extern Void primDefn ( Cell,List,Cell );
+extern Void defaultDefn ( Int,List );
+extern Void checkExp ( Void );
+extern Type conToTagType ( Tycon );
+extern Type tagToConType ( Tycon );
+extern Int visitClass ( Class );
+
+#if EXPLAIN_INSTANCE_RESOLUTION
+extern Void checkContext ( Void );
+#endif
+extern Void checkDefns ( Module );
+extern Bool h98Pred ( Bool,Cell );
+extern Cell h98Context ( Bool,List );
+extern Void h98CheckCtxt ( Int,String,Bool,List,Inst );
+extern Void h98CheckType ( Int,String,Cell,Type );
+extern Void h98DoesntSupport ( Int,String );
+
+extern Int userArity ( Name );
+extern List deriveEq ( Tycon );
+extern List deriveOrd ( Tycon );
+extern List deriveEnum ( Tycon );
+extern List deriveIx ( Tycon );
+extern List deriveShow ( Tycon );
+extern List deriveRead ( Cell );
+extern List deriveBounded ( Tycon );
+extern List checkPrimDefn ( Triple );
+
+extern Void foreignImport ( Cell,Text,Pair,Cell,Cell );
+extern Void foreignExport ( Cell,Text,Cell,Cell,Cell );
+
+extern Void implementForeignImport ( Name );
+extern Void implementForeignExport ( Name );
+
+extern List foreignExports; /* foreign export declarations */
+extern List foreignImports; /* foreign import declarations */
+
+extern Type primType ( Int /*AsmMonad*/ monad,
+ String a_kinds, String r_kinds );
+
+extern Type typeCheckExp ( Bool );
+extern Void typeCheckDefns ( Void );
+extern Cell provePred ( Kinds,List,Cell );
+extern List simpleContext ( List,Int );
+extern Cell rhsExpr ( Cell );
+extern Int rhsLine ( Cell );
+extern Bool isProgType ( List,Type );
+extern Cell superEvid ( Cell,Class,Class );
+extern Void linkPreludeTC ( Void );
+extern Void linkPreludeCM ( Void );
+extern Void linkPrimNames ( Void );
+
+extern Void compiler ( Int );
+extern Void compileDefns ( Void );
+extern Void compileExp ( Void );
+extern Bool failFree ( Cell );
+extern Int discrArity ( Cell );
+
+extern Addr codeGen ( Name,Int,Cell );
+extern Void evalExp ( Void );
+extern Int shellEsc ( String );
+extern Int getTerminalWidth ( Void );
+extern Void normalTerminal ( Void );
+extern Void noechoTerminal ( Void );
+extern Int readTerminalChar ( Void );
+extern Void gcStarted ( Void );
+extern Void gcScanning ( Void );
+extern Void gcRecovered ( Int );
+extern Void gcCStack ( Void );
+extern Void needPrims ( Int );
+extern List calcFunDepsPreds ( List );
+extern Inst findInstFor ( Cell,Int );
+#if MULTI_INST
+extern List findInstsFor ( Cell,Int );