Definition of the Haskell standard library

Chris Smith cdsmith at
Tue Jul 31 11:16:33 EDT 2007

> On Tue, 2007-07-31 at 10:15 +0100, Simon Peyton-Jones wrote:
> > - Package X is "blessed"; lots of people have argued over its design,
> > it's stable, widely used, and actively maintained.  Changes to this
> > package goes through a quality-control process.

> > Then, in effect, the "standard library" is all the X packages.

Duncan Coutts <duncan.coutts at> wrote:
> I'm not sure that belongs in the cabal file, afterall, being "blessed"
> is a central community consensus thing, not a distributed decision taken
> by each person writing the cabal file for their package. I can't make a
> blessed package by just saying that it is so.

Yes, pretty much.  The ideas mentioned in this thread for Hackage sound 
great.  I definitely was missing a lot there, as I thought of Hackage as 
just somewhere people could upload their libraries.  If there could be 
built-in quality control in promoting certain packages, that would be 
great.  Even greater would be if:

1. Hackage tracked which packages had this "blessed" status.

2. There were a simple automated way, as part of the GHC install or 
otherwise immediately visible without knowing about it ahead of time, to 
download the whole set and install them.

3. There were either (a) a single URL that can be used to see 
documentation for all of them without worrying about which package 
something is in first; or (b) something like Cabal's haddock and install 
steps would combine documentation for all installed packages into a 
single URL; or even better, (c) both.

I see it as a really big deal that documentation becomes fragmented when 
one is using many packages, so that it's harder to find what you want.  
In fact, I'd classify that as the single biggest reason that I don't use 
many packages now; they aren't documented at, and it's a pain to 
keep open several windows with documentation for different libraries.  
(I already have done it a lot for gtk2hs and happs, but at least it's a 
Big Deal to be using those, so one can justify the extra window!)

> So it's clear at the moment that the base package is blessed, changes to
> it go through the library submissions process. It's not so clear for the
> other packages that ghc has distributed and have often been taken to be
> the standard library. Many of them look more like Y's above (like
> parsec, regex-*).

I've always thought of at least these packages in the existing 
"standard" library as being pretty stable: base, arrows, stm, mtl, 
Cabal, haskell-src, template-haskell, network, process, directory, 
filepath, unix, random, parsec, and pretty.  Perhaps my perception has 
been skewed... but given how often these things are recommended, I'd 
hope they are stable.

> Even then though, I think Chris was looking for something slightly
> wider.

I'm not entirely sure I can articulate precisely what I'm looking for.  
It sounds like things are going in a reasonable direction.  I'll try to 
get my head around it, and see if I can pitch in somehow.

I was simply worried that from an outsider's perspective, several recent 
comments in various mailing list threads, IRC dicussions, etc. seemed to 
predict the demise of any standard library except for base -- which 
would be quite disturbing given that base is becoming smaller, not 
larger, over time.

> What is not clear
> to me yet is if we should just rely on mechanisms in hackage to
> distinguish the gems from the failed experiments or something more
> centralised.

Good question.  I would guess the best way to answer it is to 
simultaneously establish something centralized in the short term, and 
then try to develop the technological structures to make it obsolete.

Chris Smith

More information about the Libraries mailing list