判別共用体にもメソッド追加できるんですか、そうですか

今ざーっと

を写経しているのですが、そこで判別共有体にもメソッドが追加出来ることを知ってビックリしましたわい、F#は無限大だな〜!

以下は「平日」と「週末」を分ける判別共有体(WeekType)を定義してそこにメソッドを追加する例。

> type WeekType =
-     | WeekDay
-     | WeekEnd;;

type WeekType =
  | WeekDay
  | WeekEnd

> type WeekType with
-     member this.show() =
-         match this with
-         | WeekDay -> "WeekDay"
-         | WeekEnd -> "WeekEnd";;

type WeekType with
  member show : unit -> string

> let x = WeekDay;;

val x : WeekType = WeekDay

> x.show();;
val it : string = "WeekDay"