Haskell:编写一个布尔函数,它给出一个元素是否在列表中

时间:2014-03-31 19:34:49

标签: haskell hugs

我是Haskell的新手,我正在尝试编写一个函数,如果给出一个整数列表,另一个整数n将返回一个布尔值,无论整数是否在列表中。

所以我写道:

l=[n..m]
occurs :: Int -> [Int] ->Bool
occurs x l
  | x `elem` l = True
  | otherwise  = False

但我得到'unexpected ='或其他的语法错误。

screenshot of error message

2 个答案:

答案 0 :(得分:6)

函数occurs编译正常。但是,除非l = [n..m]n的合适定义已经存在,否则表达式m是无稽之谈。

您的代码存在更大的问题。请注意elem :: Eq a => a -> [a] -> Bool 非常类似于occurs的类型,特别是考虑IntEq的实例。

此外,l定义中的occurs与上面一行中的l = [m..n]不同。 l中的occurs自由变量,在调用occurs时绑定到某个值。

答案 1 :(得分:0)

如果我理解你的问题,那么理想的功能就是本质elem

foo :: Eq a => a -> [a] -> Bool
foo x l = x `elem` l

foo将返回true或false。