我的第一个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
。