我正在通過Haskell book我的方式,我有點難以理解摺疊。一個練習要求讀者用foldr
編寫elem
函數。我無法把頭轉向它並搜索一個例子,現在我正在試着理解它。對於foldr
類型簽名是:這個foldr中的lambda是什麼?
foldr :: Foldable t => (a -> b -> b) -> b -> t a -> b
我發現的例子功能是:
myElem' :: Eq a => a -> [a] -> Bool
myElem' a = foldr (\x y -> a == x || y) False
我的理解是,(\x y -> a == x || y)
是滿足該類型的(a -> b -> b)
部分,False
正在履行b
和t a
是被暗示在無點的風格中。
但是,lambda本身就像剛纔那樣。我將它作爲一個函數x讀取,其中一個參數y將檢查是否x(y) == a
,作爲參數提供的元素爲myElem'
,並返回True或原始參數爲x
。這顯然是無稽之談。我哪裏錯了?
Lambdas是匿名的。 'x'不是函數的名字,而是其中的一個參數。 – duplode