id,summary,reporter,owner,description,type,status,priority,milestone,component,version,resolution,keywords,cc,os,architecture,failure,difficulty,testcase,blockedby,blocking,related
1913,standalone deriving breaks module hiding,duncan,igloo,"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.",merge,closed,normal,,Compiler,6.8.1,fixed,,,Unknown/Multiple,Unknown/Multiple,,Unknown,drvfail015,,,
