darcs patch: Added list operations for arrows

Jules Bean jules at jellybean.co.uk
Wed Nov 5 04:48:17 EST 2008


Wolfgang Jeltsch wrote:
> Another point is that filterA uses just a single letter for “arrow”.  This 
> concept quickly leads to ambiguities.  For example, in mappend, the “m” 
> stands for “monoid” while in msum, it stands for “monad”.  Something like 
> filterArrow would have the disadvantage that it is longer.  With qualified 
> imports, the user of the library can decide whether to use a single letter 
> (A.filter) or something more descriptive (Arrow.filter).

I would not like this. Let me first say that I *do* understand your 
point. It is certainly ugly to use these funny adhoc namespacing 
techniques. But I think it's less ugly than the alternatives we have, 
because:

Our module system - or at least our module import/export system - is not 
sufficiently expressive.

I would definitely not like to have to use

Monoid.append
Arrow.filter
Monad.filter
Monad.map

...just on grounds of verbosity. Too many characters = ugly code.

But the alternative - to use short module aliases - does not scale well. 
I need to add appropriately qualified import statements to every single 
module in my project. We can't reexport qualifications.

;-(

I'm interested in suggestions on how we could make our namespace 
management better so that this problem is more manageable.

Jules


More information about the Libraries mailing list