我寫了一個基本的遞歸函數:哈斯克爾+輸出字符串爲String類型
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' *類型的值不能*產生輸出。所以你的要求(「我必須產生輸出」和「返回類型必須是字符串」)是衝突的。 –