A. Layered Tools

One great advantage to having a standard configure/build/install interface for all Haskell packages is that end users don't need to learn a new method for each package they install.

Likewise, with such an interface, we can build layered tools in a typical Unix fashion. For instance, we might want a tool that downloads and installs Haskell packages. It can be implemented as a simple shell script, haskell-install (where "$@" represents the command-line argument):

#!/bin/sh

echo "wget http://packages.haskell.org/$@"
echo "tar -zxvf $@.tgz"
echo "cd $@"
echo "./Setup.lhs configure"
echo "./Setup.lhs build"
echo "./Setup.lhs install"

Now the end-user (Isabella) only needs to say "haskell-install myPackage", rather than performing all of the Setup steps by hand.