現在、次の情報を含むデータベースがあります。
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]
title (t, _, _, _) = t
fans (_, _, _, fs) = fs
year (_, _, y, _) = y
testDatabase :: Database
testDatabase = [("Casino Royale", ["Daniel Craig", "Eva Green", "Judi Dench"], 2006, ["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"], 2002, ["Zoe", "Heidi", "Jo", "Emma", "Liz", "Sam", "Olga", "Kevin", "Tim"]),
("Mamma Mia!", ["Meryl Streep", "Pierce Brosnan"], 2008, ["Kevin", "Jo", "Liz", "Amy", "Sam", "Zoe"]),
("Saving Private Ryan", ["Tom Hanks", "Matt Damon"], 1998, ["Heidi", "Jo", "Megan", "Olga", "Zoe", "Wally"]),
("Life of Pi" ,["Suraj Sharma"], 2012, ["Kevin", "Olga", "Liz", "Tim", "Zoe", "Paula", "Jo", "Emma"])]
注: testDatabase にはさらに多くのデータが含まれており、私はこの一部のみを含めました。
今の目標は、ファンの数に応じて「最高の映画を表示する」ことができる関数を書くことです。
「長さのファン」を使用して映画ごとのファンのサイズを出力しようとしましたが、「最高の映画」のタイトルを出力する方法がわかりません
以下は、displayAllFilms のコード例です。
displayAllFilms' :: [Film] -> String -> String
displayAllFilms' [] filmString = filmString
displayAllFilms' ((title,cast,year,fans):films) filmString =
displayAllFilms' films (filmString ++ "\n" ++ title ++ ", " ++ listStuff cast ", " ++ (show year) ++ ", " ++ show (length fans))
フィルムごとのファン数を出力する...
編集:
この機能では、ユーザーが俳優の名前を入力する必要があり、映画のファンの数と俳優の出演に応じて最高の映画を出力する必要があることを忘れていました.
どんな助けでも大歓迎です、ありがとう!