我正在尝试使一对实例Printable,但我无法弄清楚正确的语法.我的Printable是这样的:
class Printable a where
toString :: a -> [Char]
instance Printable Bool where
toString True = "true"
toString False = "false"
instance Printable () where
toString () = "unit type"
Run Code Online (Sandbox Code Playgroud)
和我的对实例是这样的:
instance Printable ( a, b ) where
toString (a,b) = "(" ++ toString a ++ ","++ toString b ++ ")"
Run Code Online (Sandbox Code Playgroud)
在编译时,给了我一个No instance for (Printable a) arising from a use of ‘toString’.我究竟做错了什么?
您需要a并b成为Printable:
instance (Printable a, Printable b) => Printable ( a, b ) where
toString (a,b) = "(" ++ toString a ++ ","++ toString b ++ ")"
Run Code Online (Sandbox Code Playgroud)