-/* -*- 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: */
#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)
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));
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));
/*-------------------------------------------------------------------------*/