从BST打印变量

时间:2015-01-24 21:29:45

标签: haskell

我正在尝试练习,我必须打印出bst的根节点。他们告诉我使用data BinSearch x y = Empty | Node x y (BinSearch x y) (BinSearch x y)(意思是二元搜索树中没有任何内容或其中包含任何内容)和签名result :: BinSearch x y -> Maybe y。我需要运行像

这样的程序
> result None
Nothing
> result (Node 0 44 None None)
Just 44 

我对如何做到这一点感到有点困惑。如果我可以控制签名,那很容易,但我不明白如何解决这个问题。

我唯一想到的是

data BinSearch x y = None | Node x y (BinSearch x y) (BinSearch x y)
result :: BinSearch x y -> Maybe y
result (Node a b None None) = b 

但我得到的错误是它无法与BinSearch x0 y0匹配。

编辑:我修复了所有的转录错误,道歉。现在问题正如书中所述。

2 个答案:

答案 0 :(得分:1)

两个小提示:首先,它必须是BinSearch,大写为B。我怀疑这是你的转录错误。第二个是语法提示;你的模式需要括号,如下:

result (Node a b None None) = ...

这不是一个完整的解决方案;但是会让你超越这个障碍并进入下一个(更有趣的)错误。

答案 1 :(得分:0)

我明白了。我很笨你只需要在最后加上“Just 44”。我的问题是我不知道“Just”是内置的。