
On 2 July 2010 22:59, Cale Gibbard
----- Note: the following is a bit of a rant. This isn't really the right place for it, but...
The obvious place to put the Comonad class is in the Prelude, but it seems the Prelude never changes any more, enmeshed between the competing nets of implement-first and standardise-first. Putting it in Control.Comonad instead wouldn't hurt so much either I suppose. Regardless, that situation saddens me, and I wish that as a community we could devise a system for making progress on changes we'd all like to see on that level (or most of us, anyway).
[SNIP]
What more infrastructure do people think we need?
Hi Cale The libraries list does a good job in the negative of rejecting proposals to extend the Base[1]; but there doesn't seem to be a mechanism working in the opposite direction. i.e. there is no structure to "finesse" libraries outside Base. The Platform's work seems to be delivering large, functionally stable, "useful" [2] libraries and Hackage is essentially a free-for-all. Considering "foundational" libraries - that's-to-say, ones defining general classes such as Data.Default or operations like permutations/splitting on common data types - on Hackage they generally come in 2 sizes: a) too small, personally I don't want to depend on them and risk dependency conflicts elsewhere. b) too large, where the library author enumerates a domain rather than gets to its essence. Its somewhat churlish to criticize an author for this, but again I'd still rather not depend on the library. Also style-wise, outside Base there's a perhaps unfortunate variance of coding styles, GHC-pragma choices etc. Again its rather churlish to criticise authors on style grounds, but style variance does work against cohesion. If we want to incubate good foundational libraries, maybe there is a case for a "second standard library" - where the inclusion criteria is more open than for additions to Base, but where there is more community feedback on the code and APIs than the independent author model of Hackage. Best wishes Stephen [1] I don't really follow the library submissions so I can't comment on that side of things: http://www.haskell.org/haskellwiki/Library_submissions [2] By useful I'm meaning that a casual user should be able to identifier easily what the package actually does - they might need a manual to work with the package, but they won't need a "education" (vis-a-vis the cottage industry in monad tutorials).