
I've not had any problems with them, though of course your mileage may vary. Have a look at section 7.4.4.3 in http://www.haskell.org/ghc/docs/latest/html/users_guide/type-extensions.html... for an explanation. Basically, if you have a cyclic class dependency graph, the type checker won't terminate. Well, it will, but only because there's a limit on the recursion depth. The trivial example is instance C a => C a where ... In practice, I'm not sure that this is really a big issue, and it does come in handy. Perhaps someone who's actually been bitten by a problem with undecidable instances can comment? Bryn Joel Reymont wrote:
This requires
{-# OPTIONS_GHC -fallow-undecidable-instances #-}
but since I'm using -fglasgow-exts in a lot of places I'm wondering if adding undecidable instances would be a bad habit. I guess not... not until I shoot myself in the foot :-).
Any explanation of undecidable instances, the good and the bad?
Joel
On Oct 27, 2005, at 6:49 PM, Bryn Keller wrote:
How about this?
class ArbitraryDefault a where {}
instance (Integral a, Bounded a, ArbitraryDefault a) => Arbitrary a where arbitrary = arbitraryBound coarbitrary a = error "Not implemented"
instance ArbitraryDefault Word16 instance ArbitraryDefault Word32 instance ArbitraryDefault Word64