Haskellには、一般的なLispとの明らかな類似性を持つ「汎用関数」という概念があります。Haskellの経験も共通のLispの経験もないため、ここでは非常に近似するかもしれません。これは、to_string
すべてのタイプの文字列表現を定義する汎用機能を定義できることを意味します。もちろん、特別な場合にはto_string
機能を定義する必要がありますが、シグネチャがの関数がありますα → string
。
OCamlのように、Haskellでもタイプは消去されますか?はいの場合、Haskellでの「ジェネリック関数」の実装は、型が動的であり、したがって消去されない一般的なLispの実装とどのように異なりますか?
実装の詳細はコンパイラ固有のものであることを理解していますが、おそらく多くまたはすべての実装に共通する規定があります。
a -> String
。より多くの場合、型制約がありShow a => a -> String
ます。