option 型

union といえば(ていうか union じゃなくて variant 型とか言うらしいですが)、なんか option 型とかいうのが組み込まれてて、なにやらこれが便利で、えーと無効な値を表現できるとかそんな物体で。

let div x y =
  if y = 0 then
    None
  else
    Some (x / y)

let _ =
  match div 10 2 with
  | None -> print_string "invalid\n"
  | Some v -> Printf.printf "%d\n" v;
  match div 10 0 with
  | None -> print_string "invalid\n"
  | Some v -> Printf.printf "%d\n" v;

実行すると 5 invalid と表示されるわけですね。

なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h