
On 22-Jun-2004, Malcolm Wallace
Fergus Henderson
writes: | Hat/Foo/List.hs:1: | Ambiguous occurrence `List' | It could refer to either `Hat.Hat.List', imported from Hat.Prelude at | Hat/Foo/List.hs:30 | or `Hat.Foo.List.List', defined at | Hat/Foo/List.hs:32
Unfortunately, ghc-6 seems to be rather over-eager to report ambiguous use of identifiers, where in fact the usage is not ambiguous (the Hat.Hat versions are only visible qualified, whereas your Foo.List is visible unqualified).
The Hat.Hat versions are imported unqualified in line 30 of Hat/Foo/List.hs, which is "import Hat.Prelude". So I think this is a Hat bug, not a ghc bug.
Ideally we will try to find a fix for this. In the meantime, you can work around the bug either by renaming your own versions of the overlapping identifiers, or always using them qualified (including in export lists).
And including in _implicit_ export lists? Well, I tried that, but the result was another Hat bug: a pattern match failure for the following function in src/hattrans/TraceId.hs: tyClsInfo :: TraceId -> TyCls tyClsInfo (TI _ (Just (TyCls tyCls))) = tyCls | bash$ hmake -hat Main.hs | hat-trans Foo/List.hs | Creating directories Hat Hat/Foo | | Fail: TraceId.hs:152: Non-exhaustive patterns in function tyClsInfo | | bash$ cat Main.hs | import Foo.List | main = Foo.List.main | | bash$ cat Foo/List.hs | module Foo.List(Foo.List,main) where | | class List a b where | foo :: a -> b | | main :: IO () | main = return () -- Fergus J. Henderson | "I have always known that the pursuit Galois Connections, Inc. | of excellence is a lethal habit" Phone: +1 503 626 6616 | -- the last words of T. S. Garp.