用Haskell中的fold实现二叉树的有序遍历

用Haskell中的fold实现二叉树的有序遍历,haskell,Haskell,我试图在Haskell中使用折叠编程二叉树的顺序遍历-我定义为: foldB :: (x -> u -> u -> u) -> u -> BTree x -> u foldB f a Nil = a foldB f a (BNode x l r) = f x (foldB f a l) (foldB f a r) 我定义了二叉树的顺序遍历: inorder :: Ord a => BTree a -> [a] inorder Nil = [] i

我试图在Haskell中使用折叠编程二叉树的顺序遍历-我定义为:

foldB :: (x -> u -> u -> u) -> u -> BTree x -> u
foldB f a Nil = a
foldB f a (BNode x l r) = f x (foldB f a l) (foldB f a r)
我定义了二叉树的顺序遍历:

inorder :: Ord a => BTree a -> [a]
inorder Nil = []
inorder (BNode a x y) = inorder x ++ [a] ++ inorder y
但我似乎无法让他们一起工作:

inorderFold :: Ord a => BTree a -> [a]
inorderFold = foldB inorder []

您是否正在尝试使用
foldB
以顺序文件夹
定义
?如果是这样,您只需要
inorderFold=foldB(\c l r->l++[c]+++r)[]
谢谢,代码正在工作,您是否正在尝试使用
foldB
定义
inorderFold
?如果是这样,您只需要
inorderFold=foldB(\c l r->l++[c]+++r)[]
谢谢,代码正在运行