Haskell 语法举例

Haskell syntax for instance

我正在尝试使一对成为 Printable 的实例,但我无法找出正确的语法。 我的可打印是这样的:

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’。 我做错了什么?

您需要 ab 成为 Printable 的实例:

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