-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 08/17/2010 03:22 PM, Ben Moseley wrote: > {-# LANGUAGE GADTs #-} > module Foo where > > data TemplateValue t where > TemplateList :: [x] -> TemplateValue [x] > > instance (Eq a) => Eq (TemplateValue a) where > (==) (TemplateList b) (TemplateList c) = (==) b c -- here we have a == [x] > > Could not deduce (Eq x) from the context (a ~ [x1]) > > It looks as though it has decided to use the (instance Eq x => Eq [x]) instance, and hence is searching for Eq x (which can't be deduced) rather than using the (Eq a / Eq [x]) directly. So, I guess that's an interesting question why that happens...
Hm... isn't that a case of overlapping and/or incoherent instances? -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAkxrXlgACgkQIn7hlCsL25USIQCfZ2cZXlZJZxVLI/m4pWkfA4+f 18EAnjIsecXNpJNbYUyfIPs7uTgoNi5M =8tG5 -----END PGP SIGNATURE----- _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users