Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
考虑下面的代码GHCi:
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是Text)s r?
R
[Char]
:t s r
Text
s r
的Show实例R说“当我想显示一个R,打印这个字符串”,并返回实际Text值。如果您希望它带有引号,则需要显式添加它们。
Show
相比之下,s r只是一个Text值。它显示了Text始终显示的方式(String显然与 相同)。
String
想想 的实例Show Int,如果这更有意义的话。当你这样做时show 5,它会返回一个只包含一个5字符的字符串。当您这样做时show "5",它会返回一个包含三个字符的字符串 - 一个引号、一个 5 和一个引号。
Show Int
show 5
5
show "5"