我有一個類型的電影如下:在Haskell中,如何將列表中的項目作爲字符串返回?
type Film = (String, String, Int, [Rating])
type Rating = (String, Int)
我的目標,是要在一個數據庫電影的列表,像這樣:
myDatabase :: [Film]
myDatabase = [("Batman","Nolan",2012, [])]
並且在功能showFilms,它返回整個列表作爲一個字符串值。
我的代碼如下:
showFilms :: [Film] -> String
showFilms [] = []
showFilms (x:xs) = output: showFilms xs
where [[output]] = title ++ director ++ [(show year)] ++ [(show ratings)]
film = [film | (film) <- [x]]
title = [title | (title,director,year,ratings) <- film]
director = [director | (title,director,year,ratings) <- film]
year = [year | (title,director,year,ratings) <- film]
ratings = [ratings | (title,director,year,ratings) <- film]
它編譯於WinGHCi,但是當我不是一個空數據庫等輸入什麼,我得到這個錯誤:
*** Exception: HaskellCW.hs:32:29-95: Irrefutable pattern failed for pattern [[output]]
任何幫助,爲什麼這正在發生,以及如何解決它將不勝感激。
我對這種語言相當陌生,所以如果它不是最優雅的做法,我們很抱歉。
在此先感謝。
你能提供您想要的結果的例子嗎? – Zeta
期望的結果是這樣的: 「蝙蝠俠,諾蘭,2012,[ 蝙蝠俠2,諾蘭,2013,[]」 – AlexJonBarry