[Haskell] Re: base libraries
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
> 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