我還在學習Haskell,我正在做一些練習,但我一直在困惑。所以我有一個叫做「novel」的函數,它的參數需要2個字符串和一個Int (novel :: (String, String, Int) -> String
)。新的輸入/輸出必須如下所示:Haskell中的遞歸
> novel ("Rowling", "Harry Potter", 1998)
"Harry Potter (Rowling, 1998)"
這是我對我的小說的功能代碼作品如上解釋說:
novel :: (String, String, Int) -> String
novel (author, book, year) = book ++ " (" ++ author ++ ", " ++ (show year) ++ ")"
我試圖寫一個所謂的新功能,「舉「(cite :: [(String, String, Int)] -> String
)。引用的輸入/輸出應如下所示:
> cite [("author1", "book1", year1), ("author2", "book2", year2), ("author3", "book3", year3)]
"book1 (author1, year1)
book2 (author2, year2)
book3 (author3, year3)"
我試圖用「小說,」遞歸,爲了得到所需的輸出,但我不知道如何去這件事。
我已經試過:
cite :: [(String, String, Int)] -> String -- | Listed arguments
cite [] = "" -- | Base Case
cite x:xs = [(novel (author, book, year)), (novel (author, book, year)), (novel (author, book, year))]
這是誠實的,據我得到了。顯然,它不起作用,但我不確定在這裏做什麼。
提示:查看['map'](http://hackage.haskell.org/package/base-4.7.0.2/docs/src/GHC-Base.html#map)獲取想法。 – bheklilr
是否希望它返回在每個引用之間使用「\ n」的'String'(即'[Char]'),還是要返回'[String]'? – TheCriticalImperitive
我不明白地圖如何幫助我。我對map的理解是,它需要一個函數和一個列表,並且可以用算術運算來處理該列表中的項目。 –