我是Haskell的新手,我正在尝试编写一个函数,如果给出一个整数列表,另一个整数n将返回一个布尔值,无论整数是否在列表中。
所以我写道:
l=[n..m]
occurs :: Int -> [Int] ->Bool
occurs x l
| x `elem` l = True
| otherwise = False
但我得到'unexpected ='或其他的语法错误。
答案 0 :(得分:6)
函数occurs
编译正常。但是,除非l = [n..m]
和n
的合适定义已经存在,否则表达式m
是无稽之谈。
您的代码存在更大的问题。请注意elem :: Eq a => a -> [a] -> Bool
非常类似于occurs
的类型,特别是考虑Int
是Eq
的实例。
此外,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。