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
>> [email protected]
>> (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
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe