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)) {

Reply via email to