GHC accepts multiple instances for the same type in different modules
as mentioned by Simon PJ in this thread:
http://www.haskell.org/pipermail/haskell/2008-June/020436.html
here is the example, spelled out:
module B0 where
class C a where c :: a -> String
data T = T deriving Show
module B1 where
import B0
instance C T where c _ = "B1"
b = c T
module B2 where
import B0
instance C T where c _ = "B2"
b = c T
module Main where
import B1
import B2
main = print (B1.b,B2.b)
this is accepted without flags or errors and prints ("B1","B2")
.
the language report, section 4.3.2 clearly states:
A type may not be declared as an instance of a particular class more than once in the program.
Trac metadata
Trac field | Value |
---|---|
Version | 6.8.2 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | Unknown |
Architecture | Unknown |