実行可能形式へのコンパイル

このチュートリアルでは SML/NJ の対話環境しか使っていませんが,SML のプログラムを実行可能ファイルにコンパイルすることも可能です.

SML/NJ をコンパイラとして使う場合は, heap2exec を用いれば実行可能ファイルを得ることができます. ただ,この方法は少々込み入っているので,ここでは SML/NJ ではなくて MLton という処理系を使って実行可能ファイルを作成する方法を簡単に紹介します.

MLton で実行可能ファイルを作成する場合,プログラムは以下のように記述するのがよいでしょう.

(* file: test2.sml *)
fun hello name = "hello" ^ name ^ "\n"
val name1 = "ken"
val name2 = "tom"
val () = print (hello name1)
val () = print (hello name2)

基本的には val 宣言やその他の宣言の羅列でプログラムを記述します. 印字処理を行う最後の2行も val 宣言となっていますが,右辺の式の値にわざわざ名前をつける必要はないため,左辺は慣習にしたがって単に () としています.

MLton を使う場合のコンパイルの仕方とプログラム実行結果は以下の通りです.

% mlton test2.sml
% ./test2
hello, ken
hello, tom