Haskell 从BST打印变量

Haskell 从BST打印变量,haskell,Haskell,我正在尝试一个练习,在这个练习中,我必须打印出bst的根节点。他们告诉我使用数据BinSearch x y=Empty |节点xy(BinSearch x y)(BinSearch x y)(意味着二元搜索树要么没有,要么有)和签名,结果::BinSearch x y->可能是y。我需要像这样运行程序 > result None Nothing > result (Node 0 44 None None) Just 44 我对怎么做有点困惑。如果我能控制签名,那就容易了,但我不知

我正在尝试一个练习,在这个练习中,我必须打印出bst的根节点。他们告诉我使用
数据BinSearch x y=Empty |节点xy(BinSearch x y)(BinSearch x y)
(意味着二元搜索树要么没有,要么有)和签名,
结果::BinSearch x y->可能是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 
但是我得到的错误是它不能匹配v和BinSearch x0 y0


编辑:我已经修复了所有的转录错误,抱歉。这个问题现在的表述与书中的一模一样。

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

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

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

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

您描述的规范是错误的。@dfeuer您能详细说明一下吗?@JoffreyBaratheon:当返回类型为
可能是y
时,根本无法返回整个根节点。您只能返回正确节点的值。并且不能一次返回
可能是
,另一次返回
二叉树xy
。而且,
BinTree
无论如何都不可能是小写。
binSearch
需要大写-例如,
数据binSearch…
只是
不是内置函数。它只是一个数据类型的构造函数,它被声明为
data-maybea=Nothing | Just a