【发布时间】:2021-11-06 00:43:29
【问题描述】:
有人可以帮我定义一个函数 minTree,它使用 foldr 在二叉树中找到具有最小值的节点。 我开始了一些事情,但我不知道如何在我的代码中使用 foldr:
data Tree a
= Leaf
| Node (Tree a) a (Tree a)
deriving (Show, Eq)
minTree :: (Ord a) => Tree a -> Maybe a
minTree Leaf = Nothing
minTree (Node Leaf a _) = Just a
minTree (Node left a _) = minTree left
minTree = foldr...
我被困在如何定义 foldr 以返回最小节点
【问题讨论】:
-
现在看起来好多了,还是我需要修改这些行?
-
foldr的类型签名是:Foldable t => (a -> b -> b) -> b -> t a -> b所以你首先需要让 GHC 编译器相信你的树结构是 Foldable 类的一个实例。你用 -XDeriveFoldable 扩展试试运气了吗?
标签: haskell