…and produce a usable package system?
The absence of a standardised and user-friendly mechanism to package &
distribute libraries, and to locate and install such libraries has
been a major stumbling block in the adoption of non-mainstream
programming languages for a long time. I wrote about it [here](https://www.lshift.net/news.20030928lispconference.html) in the
context of Scheme.
Haskell is actually in a much better position than Scheme for
addressing this, since there are far fewer implementations (and a
single one – GHC – with an overwhelming market share), and far fewer
incompatibilities between implementations. I have high hopes for
[Cabal](http://www.haskell.org/cabal/). However, so far it seems to have failed to deliver on its
promises, as evidenced by the following snippet from the installation
instructions for [WashNGo](http://www.informatik.uni-freiburg.de/~thiemann/haskell/WASH/):
> In some setting, it will be complicated to get everything to work with
the database connection. The reason is that some versions of c2hs
(0.13.6 in particular) do not install properly as a package: the
hs-libraries component of the package description is missing with the
consequence that programs do not link properly. If you can fix they
> Installing newer versions (0.14.2 or 0.14.3) is not possible out of
the box because they require cabal with version >= 1.0.1. Alas, GHC
6.4.1 ships with 1.0. Installing cabal-1.1.4 does not help either
> …/c2hs-0.14.3 > ./Setup.hs build
> Preprocessing executables for c2hs-0.14.3…
> Building c2hs-0.14.3…
> Chasing modules from: c2hs/toplevel/Main.hs
> Could not find module `CForeign’:
> Oh well.
That’s exactly the kind of thing that will turn off all but the most
determined geeks from exploring Haskell.