2005-06-05 [長年日記]
λ. Haskell と OCaml
型システムに注目すると、HaskellになくてOCamlにあるのは、Object, Polymorphic Variant, Functor (parameterized module) かな。一方OCamlになくてHaskellにあるのは、Higher Order Polymorphism, Type Class (Ad-hoc Polymorphism), (Predicative) Rank-n Polymorphism, GADT(Generalized Algebraic Data Types) といったあたりだろうか。*1
Haskellで型関係の宣言に data, newtype, type の三つがあるのが分かりにくい というのは一理あるけど、これらはそれぞれ違った意味を持っているので、全部一緒にしてしまうのが良いかどうかは一概には言えないと思う。少なくとも私がOCamlを最初に触ったときには全部typeで済ませていることに少し混乱しました。
- 関連エントリ
*1 多分