What is it, naokirin?

私の貧弱なOCaml力を晒す 第七回 「#variant <パターンマッチ、できるんだぜ」

ヴァリアントってパターンマッチできるんですねー、なんて言ったら流石に初心者すぎるかも知れませんが、次のようなパターンマッチが可能なことは知りませんでした。

# type myvariant = [`A | `B];;
type myvariant = [ `A | `B ]
# let f x = match x with
    | #myvariant -> "myvariant"
    | `C -> "C"
  ;;
val f : [< `A | `B | `C ] -> string = <fun>
# f `A;;
- : string = "myvariant"
# f `B;;
- : string = "myvariant"
# f `C;;
- : string = "C"

"#" でヴァリアント全部のパターンを作ることができたんですね。。。