我正在尝试练习,我必须打印出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匹配。
编辑:我修复了所有的转录错误,道歉。现在问题正如书中所述。答案 0 :(得分:1)
两个小提示:首先,它必须是BinSearch
,大写为B
。我怀疑这是你的转录错误。第二个是语法提示;你的模式需要括号,如下:
result (Node a b None None) = ...
这不是一个完整的解决方案;但是会让你超越这个障碍并进入下一个(更有趣的)错误。
答案 1 :(得分:0)
我明白了。我很笨你只需要在最后加上“Just 44”。我的问题是我不知道“Just”是内置的。