If you use implicit parameters in hugs98, I strongly suggest you apply the
following patch. This fixes an embarrassing bug when more than one instance
of an implicit param is in scope of a `with'. E.g. in the expression: (?x,
?x) with ?x = True, only one of the ?x's will be bound. Dreadful! ;-)
The patch is against the Feb 2000 release, but also applies, modulo line #
perhaps, to the Nov release.
--Jeff
Index: type.c
===================================================================
RCS file: /home/cvs/root/hugs98/src/type.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -c -r1.17 -r1.18
*** type.c 1999/12/21 21:59:32 1.17
--- type.c 2000/03/04 00:58:51 1.18
***************
*** 1423,1429 ****
bindTv(alpha,typeIs,typeOff);
tIs = typeIs;
tOff = typeOff;
! /* elim duplicate uses of imp params */
preds = scSimplify(preds);
/* extract preds that we're going to bind */
for (fs1=fs; nonNull(fs1); fs1=tl(fs1)) {
--- 1423,1430 ----
bindTv(alpha,typeIs,typeOff);
tIs = typeIs;
tOff = typeOff;
! /* elim duplicates */
! improve(line,NIL,preds);
preds = scSimplify(preds);
/* extract preds that we're going to bind */
for (fs1=fs; nonNull(fs1); fs1=tl(fs1)) {