我已經為 制作了一個foldr函式BinSearchTree,但我不太確定它是否正確。你們中有人看到這里有問題嗎?有小費嗎?(我不能使用派生Foldable)
data BinSearchTree a
= Empty
| Branch (BinSearchTree a) a (BinSearchTree a)
deriving (Eq, Show)
instance Foldable BinSearchTree where
foldr f x Empty = x
foldr f x (Branch left a right) = f a (foldr f y right)
where y = foldr f x left
uj5u.com熱心網友回復:
你先在這里折疊左子樹
y = foldr f x left
然后你折疊右子樹,左結果作為累加
foldr f y right
并且只有在你折疊一個分支的論點之后
f a folding_result
要實作右折疊,您需要從折疊右子樹開始,然后在分支的引數上呼叫函式,然后才折疊左子樹
foldr f (f a (foldr f x right)) left
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/517667.html
標籤:哈斯克尔二叉搜索树折叠
