好,所以我們還沒有學習多態函數,但我們仍然需要編寫這段代碼。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