我正在嘗試通過一些示例編碼來學習 Haskell 的“折疊”(僅“折疊”和“折疊”)功能。我已經定義了一個樹(不是二進制),如下所示:
data NTree a = Nil | Tree a [NTree a] deriving Show
我想使用函式對樹的所有元素求和。我已經概述了函式的型別簽名和基本情況,但我不確定如何使用折疊來實作邏輯本身。這是我到目前為止所擁有的:
sumElements :: NTree Int -> Int
sumElements Nil = 0
sumElements tree = foldr (???) 0 tree
我真的想不出如何開始。填寫折疊功能的任何幫助將不勝感激。
uj5u.com熱心網友回復:
你幾乎擁有它。
sumElements tree = foldr ( ) 0 tree
uj5u.com熱心網友回復:
為了將 foldr 應用到你的樹,你應該為你的樹定義一個 Foldable 的實體。簡而言之,您必須提供實作資料型別“可折疊”所需的 2 個函式:foldMap 和 foldr。
您可以在本教程中了解更多資訊。
(我也是初學者,希望對你和其他人有幫助)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/474049.html
下一篇:重復函式時如何“保存”變數?
