Haskell写'\ n'而不是换行符

时间:2015-10-15 17:42:50

标签: string haskell newline

我有这个代码,而不是打印出“\ n”,我希望它将下一个字符串放在一个新行上,但似乎无法搞清楚。有什么指针吗?

onSeparateLines :: [String] -> String
onSeparateLines [] = ""
onSeparateLines ( x:[] ) = x
onSeparateLines ( x:xs ) = x ++  "\n" ++ onSeparateLines xs

我得到的是

"AAAA\nAAAA"

应该是:

"AAAA"
"AAAA"

1 个答案:

答案 0 :(得分:9)

给定的功能以及你对" \ n"的使用是正确的,所以错误必须在其他地方。在不知道细节的情况下,我怀疑您使用(相当于)print而不是putStr来打印字符串。在打印之前确保您的字符串不是show n。

如果是在GHCi中,请注意使用print打印值,所以

> onSeparateLines ["foo", "bar"]

print字符串并显示转义字符。你想要

> putStrLn (onSeparateLines ["foo", "bar"])

代替。