2011-01-31 58 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