MLをアカデミック用途?に利用されている方にお伺いします。

もともとMLはMetaLanguageの名前のとおり、定理証明系のようなものを
作るための言語として使われていたと聞きます。
そのように使うにはどうしたらよいのでしょう。

といいますのは、今LISPで言語上に言語を作るようなことをするように
いわれているような状態なのですが、これを出来ればMLでやりたいのです。

LISPを使って、LISP上に言語を作る方法はなんとなくわかっておりますが、
MLではどうするのでしょう。
関数などを定義しておくだけでしょうか?
それともインタープリタをつくるのでしょうか。