我正在尝试做一个非常简单的例子,试图了解Haskell的工作原理,我有以下疑问:
我有这段代码:
associated :: (Eq a) => a -> [(a,b)] -> [b]
associated a tuple = [b | b <- tuple, a==fst(tuple) ]
我想知道如何访问列表元组的内容以进行比较。感谢。
答案 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}}。