我的第一个Haskell项目和我没有';我不明白是什么';这是不对的

我的第一个Haskell项目和我没有';我不明白是什么';这是不对的,haskell,functional-programming,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]) 我遇到了一个“无法将预期类型“Bool”与实际

我试图递归地实现
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])
我遇到了一个“无法将预期类型“Bool”与实际类型“[a0]”匹配的错误

我也尝试了同样的使用if..else..then,但没有成功

我想我错过了Haskell的一个非常基本的概念

帮忙

没有帮我。

  • 如果已找到元素,则答案为
    True
    。你似乎在尝试创建一个列表,不知道为什么
  • 如果你没有找到它,递归并检查尾部

子句
True:member(nxs)
成员的声明返回类型
Bool
不匹配。如果在
xs
中找到
x
x==n
,则只需返回
True

否则,您应该在
member
中使用较小的列表
xs
递归(即,再次检查
n
与下一个元素是否相等)。以下是您的代码,其中两个问题已按说明修复:

member n (x:xs) | n == x    = True
                | otherwise = member n xs

或者,使用
成员n(x:xs)=n==x | |成员nxs