
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 augsod@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.