- 多相なバリアント
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 *)