我的树被哈斯克尔地图的树木
data Tree a = Leaf a | Node (Tree a) (Tree a)
deriving (Show)
定义我也宣布测试树。
myTree = Node (Node (Leaf 1) (Leaf 2)) (Leaf 3)
我想要做的是创建一个函数maptree f它将作用于Leaf。更具体地讲,f x = x +1
,
然后maptree f myTree
将返回
Node (Node (Leaf 2) (Leaf 3)) (Leaf 4)
我的解决办法是
maptree f (Leaf a)= Leaf (f a)
maptree f (Node xl xr) = Node (maptree xl) (maptree xr)
但它会返回下面的错误
Couldn't match expected type `Tree a'
against inferred type `Tree t -> Tree t'
Probable cause: `maptree' is applied to too few arguments
In the first argument of `Node', namely `(maptree xl)'
In the expression: Node (maptree xl) (maptree xr)
失败,模块加载: 没有。
但是,如果我这样做
maptree (Leaf a)= Leaf (a + 1)
maptree (Node xl xr) = Node (maptree xl) (maptree xr)
它不工作了。
我看不出第一个功能和第二个功能之间的区别。我如何得到错误?谢谢。
我现在开始工作了。我笨...>< –
应maptree F(节点X1 XR)=节点(maptree˚FXL)(maptree˚FXR)代替maptree F(节点X1 XR)=节点(maptree XL)(maptree XR) –