HOPS - Implementation Details

HOPS is written in OCaml. It was originally written in OLabl, heavily using its labelised and optional argument features which have now been merged back into OCaml. OCaml is a language from the ML family with a high-quality implementation. The graphical user interface is written in labltk, a Tk interface for OCaml.

The OCaml source code is generated from within the literate programming tool FunnelWeb. The source code itself is currently around 20,000 lines and makes heavy use of both the functional and the imperative features of ML, of the nice module system first introduced in CSL (Caml Special Light). The ``OO'' extensions that OCaml brought to CSL are not employed. HOPS modules are stored as XML documents, and parsing uses OCaml's streams (now implemented by the OCaml preprocessor Camlp4).

In the future, I hope to have opportunity to separate the ``Document'' aspects of HOPS cleanly from the term graph aspects, which will result in making the DTD more flexible on the document side.

The native term graph layout of the current implementation is not very refined; therefore the default is to use dot from AT&T's Graphviz tool suite.

PostScript versions of HOPS module documents can be generated via Lout.

Wolfram Kahl