Welcome All!

Jake McArthur jake.mcarthur at gmail.com
Thu Jan 28 00:04:18 EST 2010


It's about time we start putting this mailing list to use. I'd like to 
begin by starting a thread simply about our motivations. Here are my 
reasons for starting the alt-stdlib project:

   * Many of the commonly used type classes in the standard library are 
ad hoc and arbitrary. They are littered with things that do not 
necessarily make much sense where they are. For example, Num requires 
Show and Eq, and Monad has fail.
   * Many of the commonly used functions in the standard library have 
unnecessarily monomorphic types. It was fine in the age of the 
monomorphism restriction, but I believe that age is coming to a close.
   * The standard library lacks certain types which I see as somewhat 
fundamental. For example, we have no standard Natural ("infinite" 
maxBound) type or LazyNatural type.
   * The standard library almost entirely lacks an algebra. Num doesn't 
count, and Monoid is not enough. This would not only be useful for 
abstraction, but also for optimizations (more known properties about 
code means more opportunities for effective rewrite rules).
   * The standard library has an annoying Monad type class hierarchy. 
Monad requires neither Applicative nor Functor. Applicative is not even 
specified to agree with Monad. Alternative and MonadPlus instances each 
have a choice from two sets of laws to obey
   * The entire library could be designed with more generality in mind. 
It's annoying to have several versions of the same function when just 
one or two versions would be fine.
   * As new GHC extensions are created, the library drifts farther and 
farther from what a modern library taking advantage of these extensions 
could look like.
   * There are approaches to abstraction which the standard library 
simply doesn't support with any sane level of ease due to various 
combinations of the above and probably other things I failed to remember 
as I wrote this.
   * Simply creating new packages to use in conjunction with the 
existing standard library is insufficient simply because the standard 
library remains. As long as backward compatibility is maintained to some 
degree, there are big changes that will simply never happen.

I will probably end up amending this list later as I think of new ideas 
or ways to word the above ideas better. Here's my questions to 
everybody. Why are *you* here? What do you hope to get out of alt-stdlib?

- Jake



More information about the Alt-stdlib mailing list