| I think Hugs 1.3c and recent versions of ghc both support undecideable
| features in their type systems -- but related to typeclasses and
| instance declarations rather than to polymorphic recursion.
| 
| From email with Mark Jones, I gather that Hugs does not use an
| iteration limit mechanism, ...
| 
| I don't know whether ghc uses an iteration limit mechanism --
| my guess is that it probably uses the same technique as Hugs.

Hugs 1.3c is just an experimental system so it doesn't use an iteration
limit for this, but Gofer, on which Hugs is based, did do exactly that.
ghc doesn't need to use an iteration limit because it subjects the input
source program to stricter limits to guarantee decidability.  Future
non-experimental versions of Hugs will either adopt similar restrictions
or will add a limiting mechanism.  The hope is that we can get the
expressiveness that we're after but with restrictions that ensure
decidability.  If you can't get that ideal, then you need to decide
which side of the gap you want to compromise on.

But this is all getting away from the subject that we started on here!
So let me just confirm that there has never been a version of Gofer or
Hugs (or of GHC as far as I know) that supported polymorphic recursion
without explicit type signatures (or similar annotations from class or
module definitions).

All the best,
Mark



Reply via email to