Haskellを学んでいると、その型クラスに気づきました。これはHaskellから生まれた優れた発明であるはずです。
ただし、タイプクラスのWikipediaページ:
プログラマーは、クラスに属するすべての型に存在しなければならない一連の関数名または定数名をそれぞれの型とともに指定することにより、型クラスを定義します。
私にとってはJavaのインターフェースにかなり近いようです(Wikipediaのインターフェース(Java)ページを引用):
Javaプログラミング言語のインターフェースは、クラスが実装しなければならないインターフェース(一般的な意味で)を指定するために使用される抽象型です。
これらの2つはかなり似ています。型クラスは型の動作を制限し、インターフェイスはクラスの動作を制限します。
Haskellの型クラスとJavaのインターフェースの違いと類似点は何でしょうか、それとも根本的に異なるのでしょうか。
編集:私はhaskell.orgでさえそれらが類似していることを認めていることに気づきました それらが非常に類似している(またはそれらがそうである)場合、なぜ型クラスがそのような誇大広告で扱われるのですか?
より多くの編集:うわー、とても多くの素晴らしい答え!コミュニティにどちらが最適かを判断させる必要があると思います。しかし、答えを読んでいる間、それらすべては、「型クラスができることはたくさんありますが、インターフェースがジェネリックに対応できないか、ジェネリックに対処する必要がある」とだけ言っているようです。私は疑問に思わずにはいられません、型クラスができないのにインターフェースができることはありますか?また、Wikipediaがtypeclassは元々1989年の論文「アドホックなポリモーフィズムをアドホックから少なくする方法」であると主張していることに気づきました。一方、Haskellはまだ揺りかごのままで、Javaプロジェクトは1991年に開始され、1995年に最初にリリースされました。 。では、タイプクラスがインターフェースに似ているのではなく、その逆に、インターフェースがタイプクラスの影響を受けたのではないでしょうか。これを支持または反証する文書/論文はありますか?すべての回答をありがとう、それらはすべて非常に啓発的です!
すべての入力をありがとう!