[英]How to sum the elements of a n-ary Haskell Tree?
我是Haskell編程的新手,我嘗試編碼和操作定義為的Haskell n元樹
data Tree = Empty | Node Integer [Tree]
我想為此樹形結構編寫一個sum
函數,但我沒有弄清楚。 我編寫的函數在這里:
sumall Empty = 0
sumall (Node a (x:xy) ) = a + (sumall x)
輸入:( (Node 5 [Node 2 [Node 1 [Empty]],Node 8 [Node 7 [Node 6 [Empty]],Node 12 [Node 10 [Node 9 [Empty]],Node 13 [Node 15 [Empty]]]]] )
結果= 8。
如何開發此功能以匯總此樹中的所有元素? 提前致謝。
import qualified Data.Foldable as F
instance F.Foldable Tree where
foldMap f Empty = mempty
foldMap f (Node a ts) = mconcat $ f a : map (F.foldMap f) ts
sumall = F.sum
沒有可折疊,您會做類似的事情
sumall Empty = 0
sumall (Node a ts) = a + foldr (+) 0 (map sumall ts)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.