OCamlにはパラメトリック多形性があり、これにはいくつかの制限があります。 Haskellは型クラスを通して、ad hoc多型を提供しています。これは明らかに、いくつかの状況で非常に便利です。また、OCamlのモジュールとファンクタのシステムは、ad hoc多型を作成できることもよく知られています。たとえば、Simon Shine hereの最近の大きな回答をご覧ください。OCamlファンクタ、ハスケル型クラス、および複数導出
私の指摘は、ハスケルでは、がいくつかのタイプのクラスを派生するタイプを作成することが可能であるということです。。例えば:
data Person = Person { firstName :: String
, lastName :: String
, age :: Int
} deriving (Eq, Show, Read)
これはいくつかの特徴を(タイプPerson
の許容値は、等価テストをサポートする印刷可能で、与えられた例で読み取り可能に)を有するタイプを定義することは非常に便利です。
私の質問は次のとおりです。OCamlで同じことを簡単に行うことはできますか? によって簡単に私は、言語の基本的な構文と多くの工芸品を意味します。やや具体的な例を与えることを
は、我々は目的がShowable
とReadable
の両方を実装モジュールによってパラメータファンクタF
を書くことである2人のOCamlの署名
module type Showable = sig
type t
val to_string : t -> string
end
module type Readable = sig
type t
val from_string : string -> t
end
があるとします。
これは私が今まで見た中で最もよく書かれた質問の1つでなければなりません!誰かが答えを見つけることを願っています! – Lhooq