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

Jas*_*orn 0 haskell hugs

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

所以我写道:

l=[n..m]
occurs :: Int -> [Int] ->Bool
occurs x l
  | x `elem` l = True
  | otherwise  = False
Run Code Online (Sandbox Code Playgroud)

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

错误消息的屏幕截图

cdk*_*cdk 6

该函数occurs编译好.但是,表达式l = [n..m]是无义的,除非对合适的定义nm已经存在.

您的代码存在更大的问题.注意elem :: Eq a => a -> [a] -> Bool哪个类型非常相似occurs,特别是考虑的Int是一个实例Eq.

此外,l您的定义中occursl = [m..n]内容与上面的内容不同.的loccurs是一个自由变量这势必一些值时occurs被调用.