2013-10-07 183 views
2

如何檢查布爾表的列表是否包含True?如何檢查布爾值列表是否包含值?

[True,False] = True 
[False,False] = False 
[False,False,True] = True 
+6

'或'應該做的 – Ingo

+0

http://hackage.haskell.org/package/base-4.6.0.1/docs/Prelude.html#v:elem – Vladimir

+2

如果列表非空,你可以使用「最大」;-) –

回答

4

您可以隨時在Hoogle檢查的標準功能存在 -

對於例如 -

http://www.haskell.org/hoogle/?hoogle=%5BBool%5D+-%3E+Bool

爲您提供了多種功能,其中有「或」是一個針對這一要求。

編輯:

或是一個函數。它是簽名,或者:: [Bool] - > Bool - 表示它需要一個Bool列表並返回一個Bool。

如此,只是在做

myList = [True, False, False] 

if (or myList) then ..something.. else ..something else.. 

可能是你將如何在代碼中使用這個(更換..something ..和其他..something ..實際表達式)

+0

我應該如何申請或列入清單? – John

+0

增加了更多細節。 –

4

您正在尋找的or功能:

> ghci 

Prelude> or [True, False] 
True 
Prelude> or [False, False] 
False 

另外還有and函數返回True如果列表中的所有元素都True

0

的通用方式檢查列表包含了一些值是使用elem作爲

Prelude> True `elem` [True, False] 
True 
Prelude> True `elem` [False, False] 
False 
Prelude> True `elem` [False, False, True] 
True 
0

有幾個有趣的方式來做到這一點:

or 
foldl (||) False 
any id 
not . all not 
... 
相關問題