的上下文我对Haskell很陌生,我很难理解我的代码在这里出了什么问题。Haskell:可能的修复:添加(Eq a)到
这里是我应该做的事:
考虑一个二叉树
data BinaryTree a = Empty | Node a (BinaryTree a) (BinaryTree a)
的定义如下考虑函数反映,通过形成一个二叉树的镜像全部左右交换
reflect :: BinaryTree a -> BinaryTree a
reflect Empty = Empty
reflect (Node x l r) = Node x (reflect r) (reflect l)
编写一个函数areMirrorImages,确定两个二叉树t和u是否满足 t =反映u。该函数不应该建立新的树,所以它不应该调用reflect或Node;尽管它可能会使用节点模式。
这里是我写:
areMirrorImages :: BinaryTree a -> BinaryTree a -> Bool
areMirrorImages Empty Empty = True
areMirrorImages (Node _ _ _) Empty = False
areMirrorImages Empty (Node _ _ _) = False
areMirrorImages (Node x l r) (Node y ll rr)
| x==y = ((areMirrorImages l rr) && (areMirrorImages r ll))
| otherwise = False
当我尝试运行它,我得到的线49以下错误:
无法推断(公式一)从上下文()从使用的“==”
可能的修复而产生:添加(式a)至类型签名的关于“areMirrorImages”
在表达式的上下文:X ==ý
我我很困惑,为什么我得到这个错误,我试着在网上找到解决方案,但到目前为止我没有发现任何东西。谢谢。
好吧,这是有道理的。非常感谢帮助我理解! – Gus 2011-02-16 03:56:40