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  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.