我试图使用折叠编程在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 []