Haskell显示Data.Text的区别

时间:2013-09-19 19:47:57

标签: haskell text

考虑GHCi中的下一个代码:

*> data R = R { s :: Text }
*> instance Show R where show x = unpack $ s x
*> let r = R $ pack "¶"
*> r
¶
*> s r
"\182"

为什么它显示没有引号的段落符号以及显示R数据类型时。在显示[Char]时显示:t s r(实际上,Texts r)?

1 个答案:

答案 0 :(得分:6)

Show的{​​{1}}实例说“当我想显示R时,打印此字符串”,并返回实际的R值。如果你想要这个有引号,你需要明确添加它们。

相比之下,Text只是s r值。它显示了Text始终显示的方式(显然与Text相同)。

考虑String的实例,如果这更有意义的话。执行Show Int时,它返回仅包含show 5字符的字符串。执行5时,它会返回一个包含三个字符的字符串 - 引号,五和引号。