show变量的实例

时间:2011-05-28 18:21:26

标签: haskell

是否可以使用如下的变量?

instance Show Box where
        show (Contents x y z) = "Contents " ++ x ++ " items, " ++ y ++ " items and " ++ z ++ " items"

这不编译,我把字符串加错了,或者这通常不可能?

我正在尝试编写一个具有以下效果的show函数;

示例:显示(内容2 4 5)结果字符串“内容2个方框,4个包裹和5个字母”。

2 个答案:

答案 0 :(得分:4)

我猜你有这样的事情:

data Box = Contents Integer Integer Integer

由于Integer有一个Show - 实例,只需尝试以下操作:(而BTW,在此使用(.)比使用++更高效)

instance Show Box where 
  showsPrec _ (Contents x y z) = showString "Contents " . shows x . 
                                 showString " items, " . shows y . 
                                 showString "items and " . shows z . 
                                 showString "items"

答案 1 :(得分:1)

这是有可能的,并且您的实施是正确的,但请确保xyz首先String。 (如果没有,show他们。)