我的樹被哈斯克爾地圖的樹木
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) –