我是Haskell的新手,很遗憾,如果这是一个基本问题。Haskell:检查Int是否在Int的列表中
我目前有一个Int列表,我试图创建一个函数,它接受一个变量x并返回一个布尔值,取决于变量是否存在于列表中。
我有一个搜索,发现Data.List查找功能,但这dosent似乎返回一个布尔值。
我正在使用GHCi。
谢谢,
我是Haskell的新手,很遗憾,如果这是一个基本问题。Haskell:检查Int是否在Int的列表中
我目前有一个Int列表,我试图创建一个函数,它接受一个变量x并返回一个布尔值,取决于变量是否存在于列表中。
我有一个搜索,发现Data.List查找功能,但这dosent似乎返回一个布尔值。
我正在使用GHCi。
谢谢,
首先找到您需要的功能的类型。
要“检查”是指返回True或False,一个布尔值。
因此函数需要一个INT,INT(又名[INT])的列表,并返回布尔:
Int -> [Int] -> Bool
现在ask hoogle。
elem :: Eq a => a -> [a] -> Bool
Hoogle是一个非常有用的工具。你可以integrate it with ghci。
如果标准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
等
我这样做更多的只是这样。
l=[1,2,3,4,5]
checkIfElem :: Int -> [Int] ->Bool
checkIfElem x l
|x`elem` l =True
|otherwise=False
问谷歌带我到这里来。你不必苛求OP。 – fotanus 2015-05-26 16:49:50
如何改善答案的语气?我并不想苛刻。 – AtnNn 2015-05-26 20:18:55