I think a better design for namespacing might be:

import Data.Map as M implicit (Map)
import Data.Map as M explicit (lookup)

Why 'implicit' and 'explicit'? Do you mean something like 'include' and 'exclude'?

To me at least, implicit and explicit make more sense. I don't want to exclude importing lookup, I want to make it so I have to explicitly tag lookup as being M.lookup. Similarly, I don't want to include Map (as opposed to all the other things I'm getting from Data.Map), I just want to make it so that when I say Map, I implicitly mean M.Map.

Personally I'd extend this syntax (something Neil may have had in mind), so that

import Data.Map as M (lookup, union) implicit (Map)
gives me M.lookup, M.union and Map

while
import Data.Map as M hiding (union) explicit (lookup)
gives me everything in Data.Map with no qualification except for union and lookup, plus it gives me M.lookup.

Bob
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to