Pendant que j'apprenais Haskell, j'ai remarqué sa classe de type , qui est censée être une grande invention originaire de Haskell.
Cependant, dans la page Wikipedia sur la classe de type :
Le programmeur définit une classe de type en spécifiant un ensemble de noms de fonctions ou de constantes, ainsi que leurs types respectifs, qui doivent exister pour chaque type appartenant à la classe.
Ce qui me semble assez proche de l'interface de Java (citant la page Interface de Wikipédia (Java) ):
Une interface dans le langage de programmation Java est un type abstrait utilisé pour spécifier une interface (au sens générique du terme) que les classes doivent implémenter.
Ces deux aspects semblent assez similaires: la classe de type limite le comportement d'un type, tandis que l'interface limite le comportement d'une classe.
Je me demande quelles sont les différences et les similitudes entre la classe de type dans Haskell et l'interface en Java, ou peut-être sont-elles fondamentalement différentes?
EDIT: J'ai remarqué que même haskell.org admet qu'ils sont similaires . S'ils sont si similaires (ou le sont-ils?), Alors pourquoi la classe de type est-elle traitée avec un tel battage médiatique?
PLUS EDIT: Wow, tant de bonnes réponses! Je suppose que je vais devoir laisser la communauté décider laquelle est la meilleure. Cependant, en lisant les réponses, tous semblent simplement dire qu ' "il y a beaucoup de choses que typeclass peut faire alors que l'interface ne peut pas ou doit faire face aux génériques" . Je ne peux pas m'empêcher de me demander, y a-t-il quelque chose que les interfaces peuvent faire alors que les classes de types ne le peuvent pas? De plus, j'ai remarqué que Wikipédia affirme que typeclass a été inventé à l'origine dans l'article de 1989 * «Comment rendre le polymorphisme ad hoc moins ad hoc», alors que Haskell est toujours dans son berceau, tandis que le projet Java a été lancé en 1991 et publié pour la première fois en 1995 Alors peut-être qu'au lieu que typeclass soit similaire aux interfaces, c'est l'inverse, que les interfaces ont été influencées par typeclass?Y a-t-il des documents / papiers qui soutiennent ou réfutent cela? Merci pour toutes les réponses, elles sont toutes très instructives!
Merci pour toutes les contributions!