2011-01-31 54 views
26

我是Haskell的新手,很遺憾,如果這是一個基本問題。Haskell:檢查Int是否在Int的列表中

我目前有一個Int列表,我試圖創建一個函數,它接受一個變量x並返回一個布爾值,取決於變量是否存在於列表中。

我有一個搜索,發現Data.List查找功能,但這dosent似乎返回一個布爾值。

我正在使用GHCi。

謝謝,

回答

67

首先找到您需要的功能的類型。

要「檢查」是指返回True或False,一個布爾值。

因此函數需要一個INT,INT(又名[INT])的列表,並返回布爾:

Int -> [Int] -> Bool 

現在ask hoogle

elem :: Eq a => a -> [a] -> Bool 

Hoogle是一個非常有用的工具。你可以integrate it with ghci

+5

問谷歌帶我到這裏來。你不必苛求OP。 – fotanus 2015-05-26 16:49:50

+6

如何改善答案的語氣?我並不想苛刻。 – AtnNn 2015-05-26 20:18:55

15

如果標準elem功能不存在,您可能已經在find的正確軌道上。

myElem :: (Eq a) => a -> [a] -> Bool 
myElem x = maybe False (const True) . find (== x) 

還有很多其他的方法來實現它太像

myElem x = any (== x) 
myElem x = or . map (== x) 
myElem x = not . null . filter (== x) 
myElem x = foldr (\y b -> y == x || b) False 

0

我這樣做更多的只是這樣。

l=[1,2,3,4,5] 


checkIfElem :: Int -> [Int] ->Bool 
checkIfElem x l 
     |x`elem` l =True 
     |otherwise=False