• 多相なバリアント
type foo_bar = [ `Foo | `Bar ] (* 多相バリアント型 *)
type bar_baz = [ `Bar | `Baz ] (* 多相バリアント型 *)
 
(* `Bar さえもっていれば呼び出せる *)
let bar_to_string = function
  | `Bar -> "Bar"
  | _ -> "other" (* `Bar以外だったら other を返す *)
 
let () = bar_to_string `Bar |> print_string (* Bar *)

参考文献