0
我無法從這個給定的數據庫輸出的某些信息位:Haskell的高階函數
type Title = String
type Actor = String
type Cast = [Actor]
type Year = Int
type Fan = String
type Fans = [Fan]
type Period = (Year, Year)
type Film = (Title, Cast, Year, Fans)
type Database = [Film]
testDatabase :: Database
testDatabase = [("Casino Royale", ["Daniel Craig", "Eva Green", "Judi Dench"], 2011, ["Garry", "Dave", "Zoe", "Kevin", "Emma"]),
("Cowboys & Aliens", ["Harrison Ford", "Daniel Craig", "Olivia Wilde"], 2011, ["Bill", "Jo", "Garry", "Kevin", "Olga", "Liz"]),
("Catch Me If You Can", ["Leonardo DiCaprio", "Tom Hanks"], 2006, ["Zoe", "Heidi", "Jo", "Emma", "Liz", "Sam", "Olga", "Kevin", "Tim"])]
注意:這僅僅是數據庫的一部分,由於列表的大小。
我想寫一個函數,允許用戶輸入一年和輸出只有電影標題..我做了一個類似的粉絲,用戶輸入一個粉絲名稱和輸出他們是電影的...這個代碼如下所示風扇:
filmsByFan y = map (\(a,_,_,_) -> a) $ filter (\(_,_,_,a) -> elem y a) testDatabase
這工作100%,所以我嘗試了一個類似與byYear:
filmsByYear y = map (\(a,_,_,_) -> a) $ filter (\(_,_,a,_) -> elem y a) testDatabase
但是,這並不編譯.. 。是因爲類型Year設置爲Int?如果是的話,是否有類似的方式解決我的問題?
在此先感謝!
我修改了代碼,但是這是我的錯誤正在獲取--------------------由於使用'=='而沒有(Eq([Year] - > Bool)) 的實例 可能的修復:添加(Eq([Year] - > Bool)的實例聲明) 在表達式中:elem a == y 在'filter'的第一個參數中,即 '(\(_,_,a,_) - > elem a == y) ' '($)'的第二個參數,即 'filter(\(_,_,a,_) - > elem a == y)testDatabase' – user2240649 2013-04-20 15:11:30
我測試過了,我很確定有用。你如何調用函數? – Thomas 2013-04-20 15:21:28
不用擔心,我現在正在工作!非常感謝您的意見! – user2240649 2013-04-20 15:34:07