.sml
.smi
というファイルもコンパイル時に必要?ml(* 変数定義 *)
val x = 42;
(* `=`は等価比較演算子でもある *)
x = 42;
(* local変数 *)
let val x = 42 in 2 * x end;
(* 関数定義と呼び出し *)
fun hello name = print ("Hello " ^ name ^ "!\n");
hello "World";
(* リストと要素追加 *)
val y = [1,2,3];
0::y;
(* 例外はhandleで捕捉 *)
1 div 0 handle Div => 100;
(* 型作成 *)
datatype week = Sun | Mon | Tue | Wed | Thu | Fri | Sat
datatype person = Person of string * int
(* パターンマッチ *)
fun isWeekend w = case w of
Sun => true
| Sat => true
| other => false