我有这个代码,而不是打印出“\ n”,我希望它将下一个字符串放在一个新行上,但似乎无法搞清楚。有什么指针吗?
onSeparateLines :: [String] -> String
onSeparateLines [] = ""
onSeparateLines ( x:[] ) = x
onSeparateLines ( x:xs ) = x ++ "\n" ++ onSeparateLines xs
我得到的是
"AAAA\nAAAA"
应该是:
"AAAA"
"AAAA"
答案 0 :(得分:9)
给定的功能以及你对" \ n"的使用是正确的,所以错误必须在其他地方。在不知道细节的情况下,我怀疑您使用(相当于)print
而不是putStr
来打印字符串。在打印之前确保您的字符串不是show
n。
如果是在GHCi中,请注意使用print
打印值,所以
> onSeparateLines ["foo", "bar"]
将print
字符串并显示转义字符。你想要
> putStrLn (onSeparateLines ["foo", "bar"])
代替。