Skip to content

Infer fully qualified names to overcome namespace clashes

If you could interpret Section 5.5.2 of the last published Haskell Report (1998) as meaning: "[i]t is not an error for there to exist names [such as A.f or f] that cannot be ... resolved [by the implementation] ..." Then it would be exceptionally handy for GHC to be able to infer what any human being can infer from most name usage in a function. For example:

import Data.Map import Data.List

runThroughMap :: (Ord k) => Map k a -> Map k b runThroughMap m = map f m

runThroughList :: [a] -> [b] runThroughList l = map g l

GHC will produce an error that this "map" is an ambiguous reference and provides a nice error message containing the fully qualified names. If you accept a permissive interpretation of Section 5.5.2 of the '98 Report, GHC could infer from context that map in runThroughMap is being used on a Map and therefore should be fully qualifiable and unambiguous; similarly for map used in runThroughList.

Of course, if you disagree with this interpretation for whatever reason--many reasons are practical--feel free to delete this feature request...

W.B.R. -Peter T.

Trac metadata
Trac field Value
Version 6.4.2
Type FeatureRequest
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Compiler
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system Unknown
Architecture Unknown
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information