列表的Haskell元素

时间:2011-06-03 13:33:26

标签: list haskell

elem (1,2,3) [(1,2,3)] -> works (true)

elem (1,2,_) [(1,2,3)] -> doesnt work (want it return true as well)

我想要做的是,如果元组的前两个元素匹配列表中的一个,则返回true。

2 个答案:

答案 0 :(得分:8)

您可以使用前奏函数any来确定列表中的至少一个元素是否满足给定条件(在这种情况下,条件是“它匹配模式(1, 2, _)”)。 / p>

这种情况的一个例子是:

any (\x -> case x of (1,2,_) -> True; _ -> False) [(1,2,3),(4,5,6)]

或者更简洁一点:

or [True | (1,2,x) <- [(1,2,3),(4,5,6)]]

答案 1 :(得分:1)

如果首先将三元组转换为对,则可以使用elem

elem (1,2) $ map (\(a,b,_) -> (a,b)) [(1,2,3),(4,5,6)]