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.
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.
The HaMLet sources are available as a tarball, zipfile or Debian package:
For questions, comments and bug reports please contact the author at
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.
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.