【发布时间】:2014-05-18 12:12:01
【问题描述】:
我必须编写一个给定键列表的函数来查找所有值 与给定关联列表中的这些键相关联,其中一个键可以有多个关联值。因此,该函数必须连接各个键的查找结果。
这是我的lookupOne 代码:
lookupOne :: Int -> [(Int,a)] -> [a]
lookupOne x list = [values | (key,values)<-list, x==key]
现在我必须为lookupAll 编写代码,它将查找列表中的每个键并将其匹配到该对,然后附加结果。我必须遵循这个:
lookupAll :: [Int] -> [(Int,a)] -> [a]
lookupAll ... =
所以我尝试了很多方法来做到这一点,但我无法弄清楚:如何提取键的一个元素(因为我的lookupOne 只需要一个Int 而不是[Int])每次看直到成对的(key,value)。我尝试使用 map 函数,但它不起作用,因为我不知道如何映射使用两个参数 (lookupOne) 的函数,因为 map 显然只将一个列表作为其参数。我也无法弄清楚如何对其进行模式匹配,因为显然xs 并不意味着在下一轮它只会再次提取[keys] 的一个元素你能帮我理解这个
【问题讨论】:
标签: list haskell key concatenation key-value-store