【发布时间】:2019-12-04 18:47:37
【问题描述】:
创建一个计算二叉树中下一个元素的函数。
data BSearchTree a = Nil | Node a (BSearchTree a) (BSearchTree a)
deriving (Show, Eq)
successor :: (Ord a) => a -> BSearchTree a -> Maybe a
successor a = if a Nil then Just succ Nil
else if a (Node _ t1 t2)
then Just succ a (Node _ t1 t2)
else Nothing
找到的洞:_ :: a5 其中:‘a5’是一个模棱两可的类型变量 • 在‘Node’的第一个参数中,即‘_’ 在‘a’的第一个参数中,即‘(Node_t1 t2)’ 在表达式中:a (Node_t1 t2) • 相关绑定包括 a :: a (绑定在桌面/Aufgabe6.4.hs:32:11) 继任者 :: a -> BSearchTree a -> Maybe a (绑定在桌面/Aufgabe6.4.hs:32:1) 约束包括 Ord a(来自 desktop/Aufgabe6.4.hs:30:1-53) | | else if a (Node_t1 t2)
不太明白,错误是什么意思……
【问题讨论】:
-
下划线 (
_) 表示它仍然是您需要填写的内容。孔有时用于让 Haskell 导出该孔的类型(并给出部分解决方案:))跨度> -
您正在尝试使用
if进行模式匹配,但if不进行模式匹配。您需要使用case a of ....或多个定义方程。
标签: haskell binary-tree binary-search-tree