elem (1,2,3) [(1,2,3)] -> works (true)
elem (1,2,_) [(1,2,3)] -> doesnt work (want it return true as well)
我想做的是,如果元组的前两个元素与列表中的一个元素匹配,则返回true。
您可以使用前奏函数any
来确定列表中是否至少有一个元素满足给定条件(本例中的条件是"它与模式(1, 2, _)
匹配"(。
这种情况的一个例子是:
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)]]
如果首先将三元组转换为对,则可以使用elem
:
elem (1,2) $ map ((a,b,_) -> (a,b)) [(1,2,3),(4,5,6)]