處理 Haskell 問題,對這門語言來說相當陌生。我正在嘗試計算元組串列中存在的元組值的出現次數。
我的元組看起來像這樣: [(5, [7,2]), (2,[5,7,1,6])]
到目前為止,使用foldr,我已經做到了:
testFunc = foldr (\x-> const succ) 0
但是,這只檢索元組左側的計數。我有點困惑,如何解決這個問題?
-- 預期輸出:6
-- 當前輸出:2
uj5u.com熱心網友回復:
的型別foldr是:
foldr :: Foldable t => (a -> b -> b) -> b -> t a -> b
這意味著它正在討論的函式應該采用當前值和累加器,并將回傳與累加器相同型別的值。然后它為累加器取一個初始值,最后是Foldable要迭代的東西。
累加器顯然是計數,對于空串列,它將為零,因此有我們的初始累加器值。
然后我們只需要每次都將串列的長度添加到該累加器中。我們可以對這些資料進行模式匹配。我們將_用于每個元組中的第一項,因為我們不關心那個值。
Prelude> testData = [(5, [7,2]), (2,[5,7,1,6])]
Prelude> foldr (\(_, lst) count -> count length lst) 0 testData
6
Prelude>
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/392566.html
下一篇:如何動態分配回圈資料?
