standalone deriving breaks module hiding
Foo.hs:
module Foo ( T, t ) where
data T = T
t = T
Bar.hs:
import Foo
deriving instance Eq T
Then in ghci...
$ ghci Bar.hs -XStandaloneDeriving
[1 of 2] Compiling Bar ( Bar.hs, interpreted )
[2 of 2] Compiling Main ( Baz.hs, interpreted )
Ok, modules loaded: Bar, Main.
*Main> t == t
True
There is no way that I could implement that instance Eq T manually in Bar.hs because Foo exports T abstractly.
I see no reason that standalone deriving should have any magic ability that manual instance declarations do not have. Indeed it breaks module abstraction.
Trac metadata
Trac field | Value |
---|---|
Version | 6.8.1 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | Unknown |
Architecture | Unknown |