{-# LANGUAGE UndecidableInstances, KindSignatures, TypeApplications, FlexibleInstances #-}
class A ( m :: * -> * )
class A1 ( m :: * -> * )
class B ( m :: * -> * )
instance A m => B m
instance {-# OVERLAPPING #-} A1 m => B m
data C a
instance A C
data D a
instance A1 D
implicitly :: a => ( )
implicitly = ( )
test = implicitly @ ( B C)
test1 = implicitly @ ( B D)
ey0jIExBTkdVQUdFIFVuZGVjaWRhYmxlSW5zdGFuY2VzLCBLaW5kU2lnbmF0dXJlcywgVHlwZUFwcGxpY2F0aW9ucywgRmxleGlibGVJbnN0YW5jZXMgIy19CgpjbGFzcyBBIChtIDo6ICogLT4gKikKCmNsYXNzIEExIChtIDo6ICogLT4gKikKCmNsYXNzIEIgKG0gOjogKiAtPiAqKQoKaW5zdGFuY2UgQSBtID0+IEIgbQoKaW5zdGFuY2Ugey0jIE9WRVJMQVBQSU5HICMtfSBBMSBtID0+IEIgbQoKZGF0YSBDIGEKCmluc3RhbmNlIEEgQwoKZGF0YSBEIGEKCmluc3RhbmNlIEExIEQKCmltcGxpY2l0bHkgOjogYSA9PiAoKQppbXBsaWNpdGx5ID0gKCkKCnRlc3QgPSBpbXBsaWNpdGx5IEAoQiBDKQp0ZXN0MSA9IGltcGxpY2l0bHkgQChCIEQpCgptYWluID0gcHJpbnQgIm9rIg==
compilation info
[1 of 1] Compiling Main ( prog.hs, prog.o )
prog.hs:9:10: error:
Duplicate instance declarations:
instance A m => B m -- Defined at prog.hs:9:10
instance [overlapping] A1 m => B m -- Defined at prog.hs:11:30
|
9 | instance A m => B m
| ^^^^^^^^^^
stdout