mad*_*ode 3 haskell functional-programming
我正在尝试elem递归地实现该函数.这就是我写的:
member :: Eq a => a -> [a] -> Bool
member _ [] = False
member n (x:xs)
| n == x = True : member (n xs)
| otherwise = False
main = do
print (member 10 [1,12,11])
Run Code Online (Sandbox Code Playgroud)
我得到了'无法匹配预期类型'Bool'与实际类型'[a0]'错误.
我尝试使用if..else..then也一样,但是徒劳无功.
我想我在这里错过了一个非常基本和基本的Haskell概念.
救命?
Jon*_*ier 10
该子句True : member (n xs)与member声明的返回类型不匹配Bool.如果发现x在xs使用x == n,那么你要简单地返回True.
否则,您应该member使用较小的列表递归xs(即再次检查n下一个元素是否相等).以下是您修改这两个问题的代码:
member n (x:xs) | n == x = True
| otherwise = member n xs
Run Code Online (Sandbox Code Playgroud)