Crypto is an SML/NJ program for encoding and decoding simple cryptograms. In the main versions of the program, the decoding process is structured as a game. It runs under Linux/Unix/Mac OS X.
The program is intended as an example of how command-oriented programs may be structured in a functional model-view-controller style. It has has a controller functor that is parameterized by a model (an encoding/decoding structure) and view (abstract user). There are three view structures provided:
Crypto's distribution, including its source and documentation, is available:
There is also a paper on the functional model-view-controller software architecture that is used in crypto's implementation: “A Functional Model-View-Controller Software Architecture for Command-oriented Programs” .