如何打印表格或换行符之类的特殊字符?

时间:2019-03-11 15:57:57

标签: string haskell

[m@green09 ~]$ ghci
GHCi, version 7.6.3: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude> print "asdf"
"asdf"
Prelude> print "\tasdf"
"\tasdf"
Prelude> 

太棒了。太棒了。

如何打印表格或换行符?

2 个答案:

答案 0 :(得分:1)

您只需这样做。

> putStrLn "a\tb"
a   b

答案 1 :(得分:0)

当您在REPL中插入类型Show a => a的值时,ghci将对其执行print,如果该值的类型为IO (),它将对其求值。如果您查看印刷的定义,您会看到print = putStrLn . show,或更简单地说是print s = putStrLn (show s)

问题在于show并不是漂亮的打印工具。该函数的目的是“显示”底层结构,以便可以由Haskell或人工read来支持。这是显示转义字符的地方。您可以检查show "\t" /= "\t"

如果要实际按原样打印字符串,则应显式调用putStrputStrLn操作,这将省略此show层。


几个例子:

>>> putStrLn "a\tb"
a    b

>>> "a\tb"
"a\tb"

>>> show "a\tb" -- notice that it is actually `putStrLn (show (show "a\tb"))`!
"\"a\\tb\""

>>> print "a\tb"
"a\tb"