HaMLet

"To Be Or Not To Be Standard ML" ;-)

Version 1.3.1

What is it?

HaMLet is a faithful implementation of the Standard ML programming language (SML'97). It aims to be

The implementation is intended to be as direct a translation of the language formalisation found in the Definition of Standard ML [1] as possible, modulo bug fixes. It tries hard to get all details of the Definition right. The HaMLet source code

HaMLet can perform different phases of execution - like parsing, elaboration (type checking), and evaluation - selectively. In particular, it is possible to execute programs in an untyped manner, thus exploring the universe where even ML programs "can go wrong".

It should be emphasized that HaMLet is by no means a development system, but has been solely written with the aforementioned goal of experimentation in mind. Interpretation is highly inefficient (since it is a direct implementation of the semantic rules) and error messages are very taciturn.

As a byproduct, the HaMLet documentation contains a comprehensive list of all known bugs and `grey areas' in the current version of the SML language definition, which may be interesting on its own.

What's new?

Release 1.3 (2007/03/22) primarily improves the build structure, now supporting most major SML systems. The most significant changes are:

Release 1.3.1 (2008/04/28) fixed some portability issues with the Makefile and a conflict with the SML/NJ 110.67 library.

See the change log for more details.

Download and Contact

The HaMLet sources are available as a tarball, zipfile or Debian package:

For questions, comments and bug reports please contact the author at

Successor ML

There now is a special "HaMLet S" that incorporates proposals for Successor ML (sML). It represents a testbed and sort of a personal vision of where sML might go. Its most interesting features are:

Release 1.3.0/S4-1.3.1/S5 (2007/03/22) add views, higher-order and first-class modules and a complete formal specification of all extensions.

See changes for version history.

Other Implementations of Standard ML

SML implementations more suitable as proper development systems are:

HaMLet evolved as a byproduct of the Alice project, and owes much of its existence to the first version of the ML Kit, which took a very similar approach.

References

  1. Robin Milner, Mads Tofte, Robert Harper, David MacQueen.
    "The Definition of Standard ML" (Revised).
    The MIT Press, 1997

  2. Emden Gansner, John Reppy.
    "The Standard ML Basis Library".
    Cambridge University Press, 2004
    http://www.standardml.org/Basis/


Andreas Rossberg - last modified 2009/06/03