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.
uj5u.com熱心網友回復:
首先,組合串列 在haskell中使用。 僅用于添加數字。其次,變數y的型別是a,不是[a],所以你不能 直接使用它。
listTree :: Tree a -> [a]
listTree = foldTree f z
where
f x y z = x [y] z
z = []
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/350103.html
