
On Wed, 4 Feb 2009, Simon Marlow wrote:
Ian Lynagh wrote:
On Fri, Jan 16, 2009 at 06:42:46AM -0800, eyal.lotem@gmail.com wrote:
Closed-unqualified import: import Data.Map(Map, lookup)
One problem with this style is that you can get lots of conflicts from your VCS if you have multiple people working on the same module.
Right; in GHC we actively discourage the use of explict import lists (or closed-unqualified import to use the terminology of this thread).
http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Imports
I find that the reasons not to use explicit import lists outweigh the reasons to use them, at least for code that I'm working on (rather than just reading).
Ideally the import lists would be maintained automatically by an IDE, and would be intelligently handled by the VCS.
This will work only if you exclusively import from modules of the same project, where you can choose identifiers to never clash, and external library modules where no functions are added anymore. Certainly for GHC this works since the compiler as basis tool must not depend on many libraries. However for me the situation is that I use many libraries, each maintained by only a few people. Within this kind of development name clashes are more likely than versioning conflicts. The only style that avoids both kinds of conflicts is the qualified import, which I try to use whereever possible.