Standard ML
functor はジェネリックなデータ構造とアルゴリズムを実装するのに使われる。
例えば、キューデータ構造の signature は次のようになる。
この signature はキューのパラメータ化された型 queue を提供するモジュールを記述しており、それには Queue という例外、キューの基本操作を提供する5つの値(うち4つは関数)を記述している。これを使ってキューデータ構造を実装した structure を書くことができる。
この定義では、TwoListQueue が QUEUE という signature の実装であることを宣言している。さらに(:> で指定されている) opaque ascription により、この signature(すなわち queue)で定義が提供されていない型要素は抽象型として扱うことを示している。すなわち、ここではキューが2つのリストで定義されているが、それはモジュール外部には見せない。structure 本体には signature に挙げられている全要素に対応した実装が記述される。
structure を使うには、「ドット記法」でその型や値といったメンバーにアクセスすればよい。例えば、文字列のキューの型は string TwoListQueue.queue、空のキューは TwoListQueue.empty、q というキューの最初の要素を削除するには TwoListQueue.remove q と書けばよい。
様々な実装があるが、ここでは一部を紹介する。
MLton(英語版) - 最適化コンパイラを中心とした処理系であり、他の処理系よりも性能がいいコードを生成する。
Standard ML of New Jersey(英語版) (SML/NJ) - コンパイラ、ライブラリ、ツール、シェル、文書などが揃っている。
Moscow ML(英語版) - Caml Light をベースにした軽量な実装。
Poly/ML
TILT - 型付きの中間言語を使った実装。
HaMLet - インタプリタ実装。
ML Kit - ガベージコレクション機能を備え、リアルタイム処理に対応。
SML.NET - マイクロソフトのCLRを生成でき、他の.NETコードとのリンクを可能にする拡張もある。
SML2c - モジュールレベルの宣言をC言語に変換する。
Poplog - POP-11という言語を中心としたシステムで、Standard ML、Common Lisp、Prolog をその上で使用できる。
SML# - 東北大学電気通信研究所の大堀淳研究室が開発。C言語と連携、レコード多相性などを実装。(マイクロソフトの.NETとは無関係)
MLWorks - かつて Harlequin という企業が商用製品として開発販売していた。同社は既に倒産したが、Ravenbrook によってオープンソース化されている。
これらはいずれもオープンソースである。多くは処理系自体がSMLで実装されている。SMLの商用製品は存在しない。
Standard ML (SML) は、プログラミング言語MLの標準ないし1方言である。The Definition of Standard ML で型付け規則と操作的意味論が与えられている。1990年に初版が出版され、1997年に単純化された改版が出版されている。