function :: Eq a => a -> (b -> c -> a) -> b -> [(d,c)] -> Bool
一類的功能,但我不能把它。任何人都可以給我一個例子:例如,用一個例子來實現一個bc的功能?
function :: Eq a => a -> (b -> c -> a) -> b -> [(d,c)] -> Bool
一類的功能,但我不能把它。任何人都可以給我一個例子:例如,用一個例子來實現一個bc的功能?
它看起來像你有一些複雜的函數,使用輔助函數檢查關聯列表中的成員資格。
功能您提供:
function :: Eq a => a -> (b -> c -> a) -> b -> [(d,c)] -> Bool
有三個參數:
a
元素,b -> c -> a
,b
參數,[(d, c)]
。然後,所提供的類型的一種可能的功能爲:
function :: Eq a => a -> (b -> c -> a) -> b -> [(d,c)] -> Bool
function a f b ((_,c):rest) = ((f b c) == a) || (function a f b rest
function a f b rest = False
一個成員列表通過忽略元組的第一個元素和施加所述輔助函數到第二它檢查,元組的參數。
雖然功能看似複雜,你可以在一個相當簡單的例子
function True (==) 0 [("a", 0), ("b",1)]
在上面的例子中,我們使用的是(==)
輔助函數尋找0
運行它,我們檢查的輔助功能返回True
。
該類型是如此普遍,以至於很難推斷函數的實際功能。然而,由於a
,b
,c
,並d
有一些限制,我們提供了一個例子,他們也都發生在滿足Int
:
function (3::Int) (+) 5 [(1,2), (3,4)]
第一個參數必須是a
類型,唯一的限制是它成爲Eq
的一個實例。 3 :: Int
滿足該要求。
第二個參數只需要是一個返回Int
的雙參數函數。 (+)
滿足該要求,同時修復b ~ c ~ Int
。
第三個參數也必須是b ~ Int
。
對於任何類型d
,最後一個參數只需要是類型爲[(d, Int)
的列表]。我們將通過一份Int
s的配對清單。
如果你能描述這個函數做了什麼以及它的每個參數是什麼意思,它可能會有所幫助。 – Javran