> > - If we permit overlapping instances extension, then a few lines of code > > decide equality for all existing and future types: > > > > class TypeEq x y b | x y -> b > > instance TypeEq x x HTrue > > instance TypeCast HFalse b => TypeEq x y b > > This is exactly what I was after, but it doesn't seem to work in Hugs > - even with overlapping instances and unsafe overlapping instances > turned on.
Hugs is indeed quite problematic; back in 2004 we essentially gave up on Hugs for anything moderately advanced, especially after Ralf found an example which typechecks only if constraints are specified in a particular order. If we permute the constraints (I think, it was in the instance declaration), Hugs complaints. Clearly the order of constraints should not matter. It has been my experience that the code requiring undecidable instances on GHC might not work on Hugs, failing with sometimes bizarre error messages. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe