В Java мы можем создавать объекты/экземпляры из классов. В Haskell мы можем создавать экземпляры классов типов, например:
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
Это не такой же вопрос, как: запутался в функции как экземпляр функтора в haskell Обс: Я не спрашиваю, как работает fmap, я спрашиваю, что такое экземпляр в Haskell означает средство декларации.
Мой вопрос: Что означает экземпляр в haskell? В java мы можем создавать экземпляры из классов, но в haskell кажется, что экземпляры представляют собой типы (например, ShirtSize), к которым вы можете применить функции класса типа (например, функцию (==) из MyEq). Я прав? а также что такое экземпляр в Haskell по сравнению с экземпляром/объектом в Java?