technology from back to front

When will the Haskell community finally get their act together

…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]( 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]( 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](

> 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
you fly.

> 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.

  1. A solution to the particular problem above was [posted]( to the c2hs mailing list. That was two months ago. Why the c2hs authors didn’t bother releasing a new version with the problem fixed is beyond me.

    I also had lots of fun trying to get [cabal-get] to work. I had to resort to hacking nearly a dozen makefiles and package config files to get it to build and install. Then I tried using it to install several of the available packages – *all* of the installations failed for one reason or another!

  2. Cabal isn’t considered finished yet, and cabal-get even more so. It’s getting closer though. There’s a lot of activity centered on Cabal and supporting tools.


3 × eight =

2000-14 LShift Ltd, 1st Floor, Hoxton Point, 6 Rufus Street, London, N1 6PE, UK+44 (0)20 7729 7060   Contact us