【发布时间】:2021-12-31 14:30:19
【问题描述】:
我有以下代码:
type Film = (Fan, Title, Review)
filmRating :: [Film] -> [(Fan, Int)]
filmRating l = undefined
我希望能够给出一个清单:
[("fan1", "film1", 3), ("fan1", "film2", 3), ("fan3", "film1", 5), ("fan4", "film3", 8 )]
现在,该功能要我列出粉丝观看了多少部电影的列表。所以有了上面的列表,我应该得到:
[("fan1", 2). ("fan3", 1), ("fan4", 1)]
我需要使用地图和设置,所以我最终得到了这个
titlesFan :: (Ord k, Ord a) => [(k, a, c)] -> [(k, [a])]
titlesFan l = Map.fromListWith (++) [(f, [t]) | (f, t, _) <- l]
我似乎无法获得长度,因为它只给出 1
【问题讨论】:
-
在
[("fan1",["film2","film1"]),("fan3",["film1"]),("fan4",["film3"])]的输入结果上运行titlesFan。你到底是怎么打电话给length来得到1的? -
@JosephSible-ReinstateMonica 可能是
map length...
标签: list dictionary haskell