簡體   English   中英

Haskell-為樹類型創建折疊功能

[英]Haskell - Create a fold function for tree type

我有這個簡單的數據樹:

data Tree = Leaf Int | Node [Tree]

我必須為此類型設計一個折疊函數:

foldTree :: (Int -> a) -> ([a] -> a) -> Tree -> a

例如 :

foldTree (+1) sum (Node[ (Leaf 2), (Leaf 3)]) 

將返回(2 + 1)+(3 + 1)= 7對於葉子,我有:

foldTree f g (Leaf n)  = (f n)

但是我沒有開發節點案例的想法。

我是法國人,也為自己的錯誤感到抱歉。

有時有助於查看范圍及其類型中可用的內容。 這是一個解決方案:

foldTree f g (Leaf n)  = (f n)
foldTree f g (Node subtrees)  = 
  let as = map (foldTree f g) subtrees -- as :: [a]
  in g as

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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