У меня есть пример из научат Вас в Haskell ради Добра имениНи одного случая для (Eq TrafficLight), возникающего из использования `эля» Возможных исправлений: добавить объявление экземпляра для (Eq TrafficLight)
class Eq1 a where
(===), (=/=) :: a -> a -> Bool
x === y = not $ x =/= y
x =/= y = not $ x === y
data TrafficLight = Red | Yellow | Green
instance Eq1 TrafficLight where
Red === Red = True
Green === Green = True
Yellow === Yellow = True
_ === _ = False
instance Show TrafficLight where
show Red = "Red light"
show Yellow = "Yellow light"
show Green = "Green light"
main = do
print $ Red === Red
print $ Red === Yellow
print $ [Red, Yellow, Green]
print $ Red `elem` [Red, Yellow, Green]
и первые три строк являются работой, но последняя строка содержит elem
не делает, получили ошибку:
No instance for (Eq TrafficLight) arising from a use of `elem'
Possible fix: add an instance declaration for (Eq TrafficLight)
In the second argument of `($)', namely
`Red `elem` [Red, Yellow, Green]'
я искать решение, как я могу добавить экземпляр для отмеченной части, но не нашел подсказки по теме, я новичок в Haskell, поэтому заранее заблаговременно
Tamas
спасибо @Zeta :) – bling5630