我有这个简单的数据树:
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
关于Haskell - 为树类型创建折叠函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47792606/