Что не так со следующим экземпляром класса типов haskell?

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 classII'


person sacha    schedule 03.05.2011    source источник


Ответы (1)


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

data II = I Int Int
instance Show II where
    show (I a b) = show (a+b)
person hammar    schedule 03.05.2011