Что не так со следующим экземпляром класса типов haskell? - PullRequest
3 голосов
/ 03 мая 2011
data II = I Int Int deriving (Show)
instance II Show where
  show I a b = show (a+b)

showt.hs: 3: 2: show' is not a (visible) method of class II '

1 Ответ

8 голосов
/ 03 мая 2011

Имя класса должно предшествовать типу в объявлении экземпляра. Вам также необходимо удалить предложение deriving, поскольку вы предоставляете свой собственный экземпляр вместо того, чтобы использовать тот, который получен автоматически. Вам также необходимо добавить круглые скобки вокруг единственного аргумента в show, в противном случае парсер выглядит как 3 аргумента.

data II = I Int Int
instance Show II where
    show (I a b) = show (a+b)
...