En Java, nous pouvons créer des objets/instances à partir de classes. En Haskell, nous pouvons créer des instances à partir de classes de types, par exemple :
data ShirtSize = S | M | L -- Here ShirtSize is a enum data-type
class MyEq a where
(==) :: a -> a -> Bool
instance MyEq ShirtSize where -- Here ShirtSize is an instance of the MyEq type-class
S == S = True
M == M = True
L == L = True
_ == _ = False
Ce n'est pas la même question que : confusion sur la fonction en tant qu'instance du foncteur en haskell Obs : Je ne demande pas comment fmap fonctionne, je demande ce que signifie la déclinaison d'instance en Haskell.
Ma question est la suivante : Que signifie "instance" en haskell ? En java, nous pouvons créer des instances à partir de classes, mais en haskell, il semble que les instances soient des types (comme ShirtSize) sur lesquels on peut appliquer des fonctions de classe de type (par exemple la fonction (==) de MyEq). Ai-je raison ? Et aussi, qu'est-ce qu'une instance en Haskell par rapport à une instance/un objet en Java ?