是否可以使用如下的变量?
instance Show Box where
show (Contents x y z) = "Contents " ++ x ++ " items, " ++ y ++ " items and " ++ z ++ " items"
这不编译,我把字符串加错了,或者这通常不可能?
我正在尝试编写一个具有以下效果的show函数;
示例:显示(内容2 4 5)结果字符串“内容2个方框,4个包裹和5个字母”。
答案 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)
这是有可能的,并且您的实施是正确的,但请确保x
,y
和z
首先String
。 (如果没有,show
他们。)