所以我得將返回True
功能,如果數量n應用的按位或XS的任何序列結果:FOLDR適用於只是一個參數
checkBits xs n = not $ null $ filter (==n) $ map (foldr (.|.) zeroBits) (subsequences xs)
現在事情我沒有得到的是foldr
給出(.|.)
和zeroBits
,但我沒有需要foldr
另一個參數。 就像我理解的foldr
功能,您將它應用到的功能,這是在這種情況下(.|.)
,在「初始值」,這是我的猜測是zeroBits
,但什麼t a
,這是中提到:
Prelude>:t foldr foldr :: Foldable t => (a -> b -> b) -> b -> t a -> b
有什麼我失蹤了嗎?以上代碼的工作原理應該如此。
Haskell不要求您一次提供所有參數。如果你只提供前兩個,你就是部分應用這個函數,而結果是另一個需要最後兩個函數的函數。這是Haskell的一個普遍特性,不僅限於'foldr'。 –
嘗試詢問GHCI有關'foldr(。|。)zeroBits'的類型:因爲它顯然是一個有效的表達式,它必須有一些類型,對吧?你認爲這種類型意味着什麼?它是如何得到這種類型的? – amalloy
哦,我不知道。聽起來像一個很酷的功能!謝謝,我懂了! – IPiiro