qualified imports, PVP and so on (Was: add new Data.Bits.Bits(bitZero) method)

Henning Thielemann schlepptop at henning-thielemann.de
Mon Feb 24 20:30:56 UTC 2014

Am 24.02.2014 20:56, schrieb Edward Kmett:

> As far as I know the only serious proponent of using qualified imports
> for all imports /all/ the time is you.

First, there are some important packages like containers and bytestring 
that clearly are intended for qualified imports, and I really like that 
insertFM was replaced by Map.insert in the past. Second, your argument 
addresses a person not the issue.

> Name conflicts don't affect you. We get that. We got that loud and clear
> virtually every time the naming of pretty much anything has arisen on
> this mailing list for the last few years.

Sure, because there is no general discussion about the pros and cons of 
various naming styles. That's why it is discussed for every single 
identifier. How should a general discussion look like? What could be its 
outcome? That I am no longer allowed to propose the qualified import style?

> That doesn't change the fact that your practice and common practice diverge.

And I challenge the common practice, because it prefers convenience for 
few package authors over convenience for many package user (that may not 
even be a Haskell programmer).

For an example let me look at your lens package. You use unqualified and 
implicit imports. That is according to the PVP you would need to use 
tight version bounds like "containers >=0.4.0 && <", but you 
don't. That is, your package does not conform to the PVP. It implies 
that users may have to fix your package when one of the imported 
packages starts to export identifiers that clash with those from "lens". 
Of course, there is no need to conform to the PVP. But it works best if 
many people adhere to it.

I have not written the PVP, that is, there must be at least one other 
person who cares. I understand the need for it and try to comply to it. 
Maybe I am in a minority. Looking at Hackage it seems I am in a 
minority. But I believe I am in the minority who cares whether packages 
work together. Shall I capitulate to the majority which does not seem to 
care about package interoperability?

I am also ok if sloppy common practice happens in many Hackage packages. 
I do not need to use them. But I need to use 'base'.

More information about the Libraries mailing list