[Haskell] Re[2]: base libraries

Sven Panne sven.panne at aedion.de
Fri Nov 24 11:40:05 EST 2006

Am Freitag, 24. November 2006 15:42 schrieb Bulat Ziganshin:
> [...]
> libraries should be split into 4 rings: frozen, core, base and the rest

That's one possibility, but not the only one. Especially I don't see the need 
to distinguish between "frozen" and "core".

> [...]
> these libs should include rich set of functionality. criteria of
> inclusion library in this set are: widely used, small and portable.

While "portable" (in the sense of: "runs on a gives set of Haskell 
implementations/platforms") is a good criterion, the other ones might need 
some discussion: How can somebody determine if a package is "widely used"? If 
there was a reliable way to figure this out, I would probably keep it for 
myself and make millions of dollars in the marketing industry... And "small" 
is not a criterion at all. Is Boost small? No. Is java.io.* or java.util.* 
small? No. Etc. etc.

> [...]
> haskell98, readline, unix/Win32, QuickCheck, fgl, haskell-src, html,
> mtl, network, parsec, time, xhtml,
> ByteString, regex-*, Edison, Filepath, MissingH, NewBinary, arrows,
> HUnit, QuickCheck, monads

This is a completely random selection of packages based on personal 
preferences. I could give my personal favourites, which would not have a 
large intersection with the set above, but this would lead us nowhere. So the 
meta-question is: How will we determine which packages are worty enough to be 
"base" packages?

> [...]
> 2) cabal, cabal-get and other package management tools should use only
> libraries from frozen set. any extra functionality required
> (networking, file management...) should be *copied* into these
> packages. this just means handmade instead of automatic dependencies
> tracking, but we can't rely on automatic management for tools that
> implement this management!

Uh, oh, copying... :-P Redundancy is the source of all evil! If we step back a 
little bit, we can see that there is no intrinsic need that those tools are 
even written in Haskell, even less need that libraries needed to build those 
tools are available on non-developer installations. If e.g. cabal-get is a 
statically linked application, nobody is forced to install any 
networking/crypto/... packages. The situation here is quite similar to the 
(mostly) statically linked commands in /bin on most *nices.


More information about the Haskell mailing list