next up previous contents
Next: General Issues Up: Implementation Previous: Implementation Tools

Implementation History

Initial experimentation was performed using the language ML. It was found, however, that it was complicated to manipulate streams having to explicitly evaluate digits when they were required using the datatype described in section 3.2.

The language Gofer was then chosen. The early ML code was converted into Gofer and much of the early implementation work was performed using it. However Gofer lacks features such as arbitrary length integers and a module system, and later on HUGS (Haskell 1.4) was used instead. The Gofer code executable within HUGS with a minimum of alteration.

During the later stages of the project, the full Glasgow Haskell Compiler for Haskell 1.4 was obtained. This allowed tools such as ``Alex'' and ``Happy'' to be compiled, the creation of binaries giving improved performance, and profiling of the implementation to be performed.

Although the performance of the compiled code was significantly better than the interpreted code, the compilation process was time-consuming and the resulting binaries large. The interpreter was much better for development, debugging, and experimentation purposes.

Martin Escardo