2015-10-15 47 views
3

我有這個代碼,而不是打印出「\ n」,我希望它把下一個字符串放在一個新的行,但似乎無法弄清楚。任何指針?Haskell寫' n'而不是換行

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

什麼,我得到的是

"AAAA\nAAAA" 

這應該是:

"AAAA" 
"AAAA" 
+3

我不知道爲什麼這是downvoted。我們不是因爲他們不瞭解他們的問題而低估他們,是嗎?畢竟,如果他們已經理解了這一點,那麼他們會自己解決它。 –

+0

@ReinHenrichs你完全正確。我懷疑這是拼寫的事情。我會修復標題並添加一些標籤。 – AJFarmar

+0

@ReinHenrichs Downvote也是無用的問題。我覺得這個問題有點臨界(所以我不會低估它,但我也不喜歡它)。 – Bakuriu

回答

9

給定的功能和您的 「\ n」 的使用是正確的,所以誤差必須在其他地方。在不知道細節的情況下,我懷疑你正在使用(相當於)print而不是putStr來打印你的字符串。確保您的字符串在打印前不是show n。

如果這是GHCI,要知道,值是使用print印刷,所以

> onSeparateLines ["foo", "bar"] 

print串並顯示轉義字符。你想

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

改爲。

+0

是的,在終端工作,但我需要它在功能內做到這一點,所以我所輸入的是> onSeparateLines'給予''foo「,並在下一行」bar「 – symon

+1

我不知道你在說什麼。 「我需要在功能中做什麼」是什麼意思?您不能將'onSeparateLines'應用於除字符串列表之外的任何內容。你必須在GHCi中使用Haskell語法,所以你不能從字面上輸入'onSeparateLines'foo「」bar「'。 –

+0

onSeparateLines自定義函數需要通過鍵入'> onSeparateLines [「foo」,「bar」]''而沒有別的。然後返回'>「foo」'並在'「bar」'下方的行上,所以問題出現在我的代碼中。我試圖把putStr函數放在onSeparateLines函數中,但它似乎不起作用。 – symon

相關問題