I have another pet peeve: ease of use of tools.

The Haskell standard (intentionally?) leaves the interface to tools an 
implementors question.  Unfortunate, IMHO, every Haskell compiler I've 
tried (GHC, NHC, HBC) have just had plain horrible interfaces.
Interpreters are inherently a different story, but Hugs at least is a
lot more friendly.

Even when taking the simple example from my previous^2 post

  ghc -c Add.hs
  ghc -c Main.hs
  ghc -o Main Main.o Add.o

we notice that it takes three commands, in the right order, each with
a non optional flag.  There is nothing present here that couldn't be
deducted directly from the contents of `Main.hs', thus a simple `ghc'
(or `ghc Main' assuming my first plea) command should have sufficed.

Now granted the three commands above isn't exactly rocket science and
anyone with a little exposure to `C' (God forbid) would immediately
feel at home.  Only, this naive interface only brings the deficiencies
of C to the complexity of a type checked module based language.
Maintaining dependencies with makefiles is both hairy and error prone.
There exists scripts like `ghcmake', but that's only patching a rotten
foundation and cracks are quick to surface (try anything non trivial,
like using multiple directories).

I'm not targeting `ghc' in particular, but I do feel that for a
programming language that stresses cleaness, the tools should reflect
the same: simple things should be simple to do.

The report should state the least common denominator interface to
command line tools, at least up to relatively simple tasks like
compiling a multi-module program (spanning several directories).

How about `haskell2 [-I <dirs>] <main module>'?

/Tommy



Reply via email to