haskell - 一个 Haskell 问题写错误发现洞 _ a5

标签 haskell binary-tree binary-search-tree

创建一个函数来计算二叉树中的下一个元素。

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) • 相关绑定(bind)包括 a::a(绑定(bind)在桌面/Aufgabe6.4.hs:32:11) successor::a -> BSearchTree a -> Maybe a (绑定(bind)在桌面/Aufgabe6.4.hs:32:1) 约束包括Ord a(来自桌面/Aufgabe6.4.hs:30:1-53) | | else if a (Node _ t1 t2)

不太明白,报错是什么意思...

最佳答案

在您的代码中,successor 函数的右侧有两个下划线 (_),它们是 typed holes [haskell-wiki] .

Typed holes 可以让编译器生成应该放在那里的项目的类型,如果你自己很难弄清楚的话。在 StackOverflow 等 QA 网站上,类型化漏洞经常用于提供 OP 仍需要实现某些方面的解决方案。

在这种特定情况下,您需要在两个子表达式 (Node _ t1 t2) 中为 _ 填写一些表达式(本身不是 < em>在两种情况下表达相同)。

关于haskell - 一个 Haskell 问题写错误发现洞 _ a5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59182840/

相关文章:

java - 二叉搜索树中的插入与二叉树中的插入

haskell - 高阶函数和 id

Haskell、Knapsack 未收到预期返回类型错误

c - c中无递归的前序遍历

插入到二叉树中的 C 段错误

algorithm - 红黑树存储颜色信息时如何节省内存?

c - 指向二叉搜索树节点的双指针

haskell - 线性类型如何防止 "duplicate"的这种实现?

haskell - 授予可遍历的 F 代数,是否可能对应用代数进行变形?

java - 如何确定哪个项目位于二叉树中的级别?