[project @ 1999-10-16 02:17:25 by andy]
[ghc-hetmet.git] / ghc / interpreter / subst.h
index 40f38c4..f2de3ae 100644 (file)
@@ -1,10 +1,16 @@
-/* -*- mode: hugs-c; -*- */
+
 /* --------------------------------------------------------------------------
- * subst.h:     Copyright (c) Mark P Jones 1991-1998.   All rights reserved.
- *              See NOTICE for details and conditions of use etc...
- *              Hugs version 1.3c, March 1998
- *
  * Definitions for substitution data structure and operations.
+ *
+ * The Hugs 98 system is Copyright (c) Mark P Jones, Alastair Reid, the
+ * Yale Haskell Group, and the Oregon Graduate Institute of Science and
+ * Technology, 1994-1999, All rights reserved.  It is distributed as
+ * free software under the license in the file "License", which is
+ * included in the distribution.
+ *
+ * $RCSfile: subst.h,v $
+ * $Revision: 1.5 $
+ * $Date: 1999/10/16 02:17:27 $
  * ------------------------------------------------------------------------*/
 
 typedef struct {                        /* Each type variable contains:    */
@@ -28,8 +34,8 @@ extern  List            btyvars;        /* explicitly scoped type vars     */
 #define tyvar(n)        (tyvars+(n))    /* nth type variable               */
 #define tyvNum(t)       ((t)-tyvars)    /* and the corresp. inverse funct. */
 #define isBound(t)      (((t)->bound) && ((t)->bound!=SKOLEM))
-#define aVar            mkOffset(0)     /* Simple skeleton for type var    */
-#define bVar            mkOffset(1)     /* Simple skeleton for type var    */
+#define aVar            mkOffset(0)     /* Simple skeletons for type vars  */
+#define bVar            mkOffset(1)
 #define enterBtyvs()    btyvars = cons(NIL,btyvars)
 #define leaveBtyvs()    btyvars = tl(btyvars)
 
@@ -62,6 +68,7 @@ extern Cell  getDerefHead       Args((Type,Int));
 extern Void  expandSyn          Args((Tycon, Int, Type *, Int *));
 
 extern Void  clearMarks         Args((Void));
+extern Void  markAllVars        Args((Void));
 extern Void  resetGenerics      Args((Void));
 extern Void  markTyvar          Args((Int));
 extern Void  markType           Args((Type,Int));
@@ -101,8 +108,10 @@ extern Bool  matchPred          Args((Cell,Int,Cell,Int));
 extern Bool  unifyPred          Args((Cell,Int,Cell,Int));
 extern Inst  findInstFor        Args((Cell,Int));
 
-extern Bool  sameSchemes        Args((Type,Type));
+extern Void  improve           Args((Int,List,List));
 
-extern Bool  typeMatches        Args((Type,Type));
+extern Bool  sameSchemes       Args((Type,Type));
+extern Bool  sameType          Args((Type,Int,Type,Int));
+extern Bool  matchType         Args((Type,Int,Type,Int));
 
 /*-------------------------------------------------------------------------*/