[英]Haskell: Check if Int is in a list of Int's
我是Haskell的新手,对不起,如果这是一个基本问题。
我目前有一个Int的列表,我正在尝试创建一个函数,它接受一个变量x并返回一个布尔值,具体取决于该变量是否存在于列表中。
我有一个搜索,发现Data.List查找函数,但这个dosent似乎返回一个布尔值。
我正在使用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
等等
我在闲暇时间尝试学习Haskell的两个月。 从专业角度来说,我做了几年的C / C ++。 我必须说,学习Haskell的第一个月是一个令人头疼的经历。 如果问题很简单而不是像elem
那样使用现有的API,我总是试着自己做事。 我正在慢慢学习FP方式,下面是我的解决方案:
isMember n [] = False
isMember n (x:xs)
| n == x = True
| otherwise = isMember n xs
用法:
isMember 2 [1,9,4,5] -- False
isMember 2 [4,5,2,9] -- True
我更简单地这样做了。
l=[1,2,3,4,5]
checkIfElem :: Int -> [Int] ->Bool
checkIfElem x l
|x`elem` l =True
|otherwise=False
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.