show如果它只是将某些东西转换为任意字符串(如toStringJava中),则不是很有用.这是更有益的,如果结果是既容易阅读和机器可读的,所以常见的用途show是生产,你是值的序列化表示showING,这样就可以在再次使用读它read,而且,对于大多数实现show,以便您可以show在Haskell REPL中键入n 的字符串ghci并返回反序列化的值.
所以,如果你有一个字符串像"42",并且show它,你想要得到的字符串"\"42\"",因为当你输入42的ghci(和等价使用read功能),你会得到一个号码,而当你键入"42"的ghci,你得到的字符串,你想.
因为read是倒数show.所以我应该始终能够read得到结果show,并获得一个String.
> (read "42")::String
"*** Exception: Prelude.read: no parse
> (read "\"42\"")::String
"42"
Run Code Online (Sandbox Code Playgroud)