Haskell +输出String作为String类型

时间:2016-01-11 20:18:38

标签: string haskell io

我写了一个基本的递归函数:

bibliography_rec :: [(String, String, Int)] -> String
bibliography_rec [] = ""
bibliography_rec (x:xs) = (citeBook x) ++ "\n" ++ (bibliography_rec xs)

citeBook只需将元组重新格式化为字符串。

使用此输入运行时:

ghci> bibliography_rec [("Herman Melville", "Moby Dick", 1851),("Georgy Poo", "Alex Janakos", 1666)]

它产生:

"Moby Dick (Herman Melville, 1851)\nAlex Janakos (Georgy Poo, 1666)\n"

我需要逐行打印,所以我使用了这个:

bibliography_rec (x:xs) = putStr ((citeBook x) ++ "\n" ++ (bibliography_rec xs))

我的问题是我的输出需要是String类型IO ()

我已经被困在这个问题太久了所以任何帮助都很棒!

1 个答案:

答案 0 :(得分:5)

看起来你已经在那里,你只需要putStrLn字符串而不是print它(默认情况下这是ghci所做的)。 print首先通过show运行其参数,因此它将引用"\n"之类的转义字符。

ghci> putStrLn $ bibliography_rec [...]