好,所以我们还没有学习多态函数,但我们仍然需要编写这段代码。Haskell:递归与多态相等函数
Given:
nameEQ (a,_) (b,_) = a == b
numberEQ (_,a) (_,b) = a == b
intEQ a b = a == b
member :: (a -> a -> Bool) -> a -> [a] -> Bool
我说:
member eq x ys | length ys < 1 = False
| head(ys) == x = True
| otherwise = member(x,tail(ys))
,但我得到有关不正确的类型,以及一些其他的东西的错误。我们必须从某种类型看看是否存在一个元素。所以我们有以上两种类型。一些例子给出:
phoneDB = [("Jenny","867-5309"), ("Alice","555-1212"), ("Bob","621-6613")]
> member nameEQ ("Alice","") phoneDB
True
> member nameEQ ("Jenny","") phoneDB
True
> member nameEQ ("Erica","") phoneDB
False
> member numberEQ ("","867-5309") phoneDB
True
> member numberEQ ("","111-2222") phoneDB
False
> member intEQ 4 [1,2,3,4]
True
> member intEQ 4 [1,2,3,5]
False
不完全知道我需要在这里做。任何关于此的帮助或文档都会很棒。谢谢!
好的,我不知道eq功能。是的,我认为我有这一点,我不断收到错误(可能是由于==)。谢谢你的帮助。 – Matt 2010-09-14 11:46:14
@Matt:'eq'不是你不知道的库函数 - 它作为参数传递给你写的'member'函数! – 2010-09-15 18:48:09