hi - hmake interactive

Hmake interactive, or hi for short, is an interpreter-like environment that you can wrap over any common Haskell compiler to achieve an interactive development style.

It deliberately looks and feels a lot like the Hugs interpreter. The difference is that you get real compiled code, compiled by your favorite compiler - you can even change compiler on the fly, to check your code's portability!

Of course, one of the reasons people prefer Hugs over a compiler is that Hugs generates runnable code very quickly compared to, say, ghc. But all compilers are not equal - for instance, nhc98 is pretty fast at generating code. On a 500Mhz Pentium, hi compiles an expression typed at the command-line in about one second with nhc98. And if you compare compile time with running time, nhc98's compiled code runs between 3-15 times faster than Hugs, so you can easily end up with a net gain.

An even bigger potential advantage of hi is that it uses a smart recompilation strategy. Big programs are the ones on which you would most like to use a compiler, for the benefit of speedy code. However, in big projects, compile times are long, so you really only want to recompile the modules you have edited and those which depend on them. Writing Makefiles is tedious and error-prone, so Hugs is often seen as an easier alternative. But because hi is just an interface to the standard hmake, you get the benefit of its recompilation analysis to rebuild only what is necessary, so you can reduce compile-times significantly, whilst still achieving full compiled-code speed, and what's more, you also have the Hugs-like ability to test small expressions at the command-line.

To use hmake interactive, just grab, build, and install hmake, then type hi. The commands available are described in hi-commands.html.

If you want to know a little bit more about hi, there are two draft documents describing its implementation. A literate script. A draft paper.

There is also a web page describing the simple line editor used in hi to allow you to edit expressions as you type them.

The latest updates to this software are available on the WWW from (

Information last updated: 2002-01-15
York Functional Programming Group