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