考虑以下示例(?>= ghci,$= shell):
?> writeFile "d" $ show "d"
$ cat d
"d"
?> writeFile "d" "d"
$ cat d
d
?> writeFile "backslash" $ show "\\"
$ cat backslash
"\\"
?> writeFile "backslash" "\\"
$ cat backslash
\
?> writeFile "cat" $ show "" -- U+1F408
$ cat cat
"\128008"
?> writeFile "cat" ""
$ cat cat
Run Code Online (Sandbox Code Playgroud)
我理解另一种方式"\128008"只是""在Haskell源代码中表示的另一种方式
.我的问题是:为什么""示例的行为类似于反斜杠而不是像"d"?既然它是一个可打印的角色,它不应该像一个字母吗?
更一般地说,确定字符是显示为可打印字符还是转义码的规则是什么?我查看 了Haskell 2010语言报告中的第6.3节,但没有指定确切的行为.