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](http://haskell.org/onlinereport/decls.html#sect4.3.2) clearly states:
> A type may not be declared as an instance of a particular class more than once in the program.
<details><summary>Trac metadata</summary>
| 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 |
</details>
<!-- {"blocked_by":[],"summary":"GHC accepts multiple instances for the same type in different modules","status":"New","operating_system":"Unknown","component":"Compiler","related":[],"milestone":"","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"6.8.2","keywords":[],"differentials":[],"test_case":"","architecture":"Unknown","cc":[""],"type":"Bug","description":"as mentioned by Simon PJ in this thread:\r\n\r\nhttp://www.haskell.org/pipermail/haskell/2008-June/020436.html\r\n\r\nhere is the example, spelled out:\r\n{{{\r\nmodule B0 where\r\nclass C a where c :: a -> String\r\ndata T = T deriving Show\r\n\r\nmodule B1 where\r\nimport B0\r\ninstance C T where c _ = \"B1\"\r\nb = c T\r\n\r\nmodule B2 where\r\nimport B0\r\ninstance C T where c _ = \"B2\"\r\nb = c T\r\n\r\nmodule Main where\r\nimport B1\r\nimport B2\r\nmain = print (B1.b,B2.b)\r\n}}}\r\nthis is accepted without flags or errors and prints `(\"B1\",\"B2\")`.\r\n\r\nthe [http://haskell.org/onlinereport/decls.html#sect4.3.2 language report, section 4.3.2] clearly states:\r\n\r\n A type may not be declared as an instance of a particular class more than once in the program.\r\n","type_of_failure":"OtherFailure","blocking":[]} -->
issue