我在数据库中有一个电影列表。
type Database = [Film]
type Title = String
type Actor = String
type Cast = [Actor]
type Fan = String
type Fans = [Fan]
type Year = Int
type Period = (Year, Year)
type Film = (Title, Cast, Year, Fans)
我想要做的是找出我列表中的电影。
功能一
- 拥有最多粉丝
- 按特定演员名称过滤。
功能二
- 总体排名前 5 的电影(按粉丝数量)
降序排列
我目前有两个代码片段,我要么试图让它们一起工作。或者找到更好的解决方案:
inCast :: Actor -> Film -> Bool
inCast givenActor (_, cast, _, _) = any (\actor -> actor == givenActor) cast
和
import Data.List
import Data.Ord
bestFilm :: Database -> Film
bestFilm = maximumBy $ comparing (length . fans)
我在这件事上完全走错了吗?
非常感谢您提前提供的任何帮助。
编辑:我拥有的附加代码。不过,我似乎无法使用它来帮助我解决这部分问题。有任何想法吗?
filmsWithFan :: Fan -> [Film]
filmsWithFan givenFan = filter (isFan givenFan) testDatabase