繁体   English   中英

如何定义 listTree 以便它返回一个按顺序包含所有元素的列表?

[英]How to define listTree so that it returns a list containing all the elements in order?

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

首先,组合列表在haskell 中使用++ +仅用于添加数字。 其次,变量y的类型为a ,而不是[a] ,因此您不能直接在其上使用++

listTree :: Tree a -> [a]
listTree = foldTree f z
    where
    f x y z = x ++ [y] ++ z
    z = []

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM