Instances of qualified imported classes
Ian Lynagh <[email protected]> Mon, 20 Oct 2003 13:58:08 +0100
| Newsgroups | gmane.comp.lang.haskell.nhc.bugs |
|---|---|
| Message-ID | <[email protected]> |
Hi,
While getting hat to work with ghc6 I've come across the following
issue:
If Bar.hs is this:
-----
module Bar where
class Bar a where
bar :: a -> Bool
-----
and Foo.hs is this:
-----
module Foo where
import qualified Bar
data Foo = Foo
instance Bar.Bar Foo where
bar _ = True
-----
then ghc 6.0.1 is happy enough, but nhc98 v1.16 doesn't like bar being
used unqualified:
$ make clean
rm -f *.o *.hi
$ make ghc
ghc6 -c Bar.hs
ghc6 -c Foo.hs
$ make clean
rm -f *.o *.hi
$ make nhc
nhc98 -c Bar.hs
nhc98 -c Foo.hs
====== Errors when renaming:
The identifier bar instantiated at 9:5 does not belong to this class.
make: *** [nhc] Error 1
$
If I qualify bar:
-----
module Foo where
import qualified Bar
data Foo = Foo
instance Bar.Bar Foo where
Bar.bar _ = True
-----
then the roles are reversed:
$ make clean
rm -f *.o *.hi
$ make ghc
ghc6 -c Bar.hs
ghc6 -c Foo.hs
Foo.hs:11: Qualified name in function definition: Bar.bar
make: *** [ghc] Error 1
$ make clean
rm -f *.o *.hi
$ make nhc
nhc98 -c Bar.hs
nhc98 -c Foo.hs
$
hugs agrees with GHC 6 on both, and the report seems to agree on the
latter (I haven't looked for what it says on the former, but it seems
reasonable behaviour).
Thanks
Ian