如何检查布尔值列表是否包含 True?
例如
[True,False] = True
[False,False] = False
[False,False,True] = True
如何检查布尔值列表是否包含 True?
例如
[True,False] = True
[False,False] = False
[False,False,True] = True
您正在寻找以下or
功能:
> ghci
Prelude> or [True, False]
True
Prelude> or [False, False]
False
如果列表的所有and
元素True
都是True
.
您可以随时检查 Hoogle 中是否存在标准函数。
例如:http ://www.haskell.org/hoogle/?hoogle=%5BBool%5D+-%3E+Bool
为您提供了几个功能,其中or
一个是满足此要求的功能。
编辑:
or
是一个函数。它的签名or :: [Bool] -> Bool
意味着它接受Bool
并返回一个Bool
.
所以,只是在做
myList = [True, False, False]
if (or myList) then ..something.. else ..something else..
可能是您在代码中使用它的方式(将 ..something.. 和 ..something else.. 替换为实际表达式)。
检查列表是否包含某些值的通用方法是elem
使用
Prelude> True `elem` [True, False]
True
Prelude> True `elem` [False, False]
False
Prelude> True `elem` [False, False, True]
True
有几种有趣的方法可以做到这一点:
or
foldl (||) False
any id
not . all not
...