It is compiled using the the ghc compiler (with Glasgow extensions enabled).
It uses the hs-plugins library to allow Haskell modules to be dynamically loaded by the ghc runtime system and to allow Haskell expressions to be dynamically loaded and evaluated at runtime.
It implements the GUI aspects of Pivotal using the Gtk2hs graphics toolkit.
Error handlingError effects are localised. An error in the compilation (parsing, type-checking, code-generation) of one expression in a Pivotal document does not affect the compilation or evaluation of other expressions.
GUI limitationsThe present implementation is intended only as an exploratory `proof of concept' -- not as a generally usable prototype. The GUI implements only a bare subset of the features required to support a document-centered environment.
The system is not at all responsive: for example, resizing the display window (which, in principle, need involve no more than a further amount of lazy evaluation) actually triggers a root-and-branch recompilation of the entire program.
Support of one of the central features of the approach, the ability to edit data structures by direct manipulation (point and click with the mouse) on the graphical representation of ADTs is present only in vestigial form.
PaperThe principles underlying this approach are described in:
A document-centered environment for Haskell, Keith Hanna, 17th Intnl Workshop on Impl and Appl of Functional Languages, Dublin 2005.
AcknowledgmentsThis prototype implementation of Pivotal would not have been possible without:
- The use of the Glorious Haskell Compiler, GHC.
- The hs-plugins library developed by Don Stewart and colleagues.
- The Gtk2hs graphics toolkit, together with help from Axel Simon, its lead author.
- Help from Bob Davie in putting together a Linux environment in which all of the above interworked harmoniously.