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
一起使用吗?
答案 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