2015-10-11 55 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

你需要ab是的Printable實例:

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

就是這樣。謝謝。我應該重新閱讀關於實例的一些事情,可能。 – Chiffa