【发布时间】:2016-01-11 20:18:38
【问题描述】:
我写了一个基本的递归函数:
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 ()
我已经被困在这个问题上太久了,所以任何帮助都很棒!
【问题讨论】:
-
String类型的值无法产生输出。所以你的要求(“我必须产生输出”和“返回类型必须是String”)是冲突的。