On Jul 25, 2011, at 7:38 PM, Maciej Marcin Piechotka wrote: > On Mon, 2011-07-25 at 00:11 -0400, August Sodora wrote: >> Out of (perhaps naive) curiosity, what difficulties does allowing such >> overriding introduce? Wouldn't the module system prevent the ambiguity >> of which implementation to use? >> >> August Sodora >> aug...@gmail.com >> (201) 280-8138 >> > > class A a where > a :: a > > class A a => B b where > b :: b > > a = b > > class A a => C c where > c :: c > > a = c > > data BC = B | C deriving Show > > instance B BC where > b = B > > instance C BC where > c = C > > show (a :: BC) == ??? >
I would imagine this causing a compiler error, such as: Foo.hs:16:10: Duplicate implied instance declarations: instance A BC -- Defined at Foo.hs:16:10-13 instance A BC -- Defined at Foo.hs:19:10-13 Adding an explicit instance A BC would resolve this ambiguity. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe