2015-10-11 3 views
0

Я пытаюсь сделать пару экземпляром Printable, но я не могу понять правильный синтаксис. Мой печати заключается в следующем:Синтаксис Haskell, например

class Printable a where 
    toString :: a -> [Char] 

instance Printable Bool where 
    toString True = "true" 
    toString False = "false" 
instance Printable() where 
    toString() = "unit type" 

и мой экземпляр для пар это:

instance Printable (a, b) where 
    toString (a,b) = "(" ++ toString a ++ ","++ toString b ++ ")" 

, который при компиляции, дает мне No instance for (Printable a) arising from a use of ‘toString’. Что я делаю неправильно?

+0

Кстати, это ошибка типа, а не ошибка синтаксиса. –

ответ

5

Вам нужно a и b быть экземплярами Printable:

instance (Printable a, Printable b) => Printable (a, b) where 
    toString (a,b) = "(" ++ toString a ++ ","++ toString b ++ ")" 
+0

Вот и все. Благодарю. Вероятно, я должен перечитать некоторые вещи о примерах. – Chiffa

Смежные вопросы