我可以在Show中使用表格和换行符之类的特殊字符吗?

时间:2019-03-11 16:07:47

标签: string haskell printing

data Pair = P Int Int

instance Show Pair where
  show (P n1 n2) = (show n1) ++ "\t" ++ (show n2)

结果:

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.
[1 of 1] Compiling Main             ( labn.hs, interpreted )
Ok, modules loaded: Main.
*Main> show (P 5 6)
"5\t6"

好了,这可能是一个人为的问题,但是我的实际用例是尝试漂亮地打印一棵树-换行符和选项卡似乎有助于可读性。

我可以以某种方式将这些字符与show一起使用吗?

1 个答案:

答案 0 :(得分:8)

show返回一个字符串,然后将其放入GHCi中时,它执行print . show $ (P 5 6),等效于putStrLn . show . show $ (P 5 6),它将打印所有字符。

问题在于双重演出。

您要做的是仅使用打印,例如print (P 5 6)。如果您使用的是GHCi,print会自动应用于每个表达式,因此您只需要输入

Prelude> P 5 6