F# は OCaml を .NET に乗っけて色々足した言語だが、その過程で失ってしまったものもたくさんあり、 その中でも特に痛いのは functor がないことだ。 そして F# には高階型も型クラスもないので、われわれは例の interface でなんとか生き延びざるを得ない…… ……わけでもない。 F# の言語機能の隠された真の力をお伝えするために、とりあえずは Haskell の do-notation のようなものを実現してみせよう。 まず、名前を言ってはいけない例のあの概念を表す "型クラス" を作る。