簡體   English   中英

如何對n元Haskell樹的元素求和?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM