【发布时间】:2021-11-06 03:18:11
【问题描述】:
listTree :: Tree a -> [a]
listTree = foldTree f z
where
f x y z = x + y + z
z = []
这是我目前所拥有的,但我的 f 是错误的,因为预期的类型是 Tree a -> [a],但实际的类型是 Tree [a] -> [a]
data Tree a
= Tip
| Bin (Tree a) a (Tree a)
deriving (Show, Eq)
foldTree :: (b -> a -> b -> b) -> b -> Tree a -> b
foldTree f z Tip = z
foldTree f z (Bin l x r) = f (foldTree f z l) x (foldTree f z r)
这是树的折叠和数据类型。
在定义f 时需要帮助。
【问题讨论】: