私はOCaml, haXe, Scalaを勉強してきましたが、この三つの言語では構造的部分型がサポートされています。せっかくだから三言語の構造的部分型の特徴を比較してみることにしました。 OCamlは全て型推論してくれる代わりに部分型への変換は明示的。部分型変換ができるバリアントがある。 haXeは全て型推論してくれて、かつ部分型への変換も暗黙的にできるけど、場合によってはコンパイルがとまらない Scalaは型推論は(完璧には)してくれないけど、部分型への変換は暗黙的 全部違うのが興味深いですね。ところで、それぞれの型の表現も比べてみましょう。 (* OCaml版 *) # type t = [ `Const | `Var ];; (* 多相バリアント *) type t = [ `Const | `Var ] # type tt = [ t | `Exp ];; type tt = [