如何在haskell中访问列表中的元组内容?

时间:2017-08-22 07:24:49

标签: haskell tuples list-comprehension

我正在尝试做一个非常简单的例子,试图了解Haskell的工作原理,我有以下疑问:

我有这段代码:

associated :: (Eq a) => a -> [(a,b)] -> [b]
associated a tuple = [b  | b  <- tuple, a==fst(tuple) ]

我想知道如何访问列表元组的内容以进行比较。感谢。

1 个答案:

答案 0 :(得分:2)

您可以过滤列表并获取fst值:

associated :: (Eq a) => a -> [(a,b)] -> [b]
associated a tuplst = map snd $ filter (\(x,_) -> a == x) tuplst

或使用类似的行为理解:

associated a tuplst = [b | (a', b) <- tupls, a == a']

您可以将理解中的元组与(a', b) <- tupls进行模式匹配,这会将值解压缩到a'和'b',然后只需添加过滤器a == a' {1}}。