假设我有BST的数据类型为:地图功能的BST在Haskell
data tree a = Empty | Node a (tree a) (tree a)
deriving (Show, Read, Eq)
我做一个简单的地图功能应用BST的每个元素。
treeMap :: (a -> b) -> tree a -> tree b
treeMap f (Empty) = Empty
treeMap f (Node left right) = Node (treeMap f left) (treeMap f right)
但是它给了我一个错误说:
Constructor `Node' should have 3 arguments, but has been given 2
In the pattern: Node left right
In the definition of `treeMap':
treeMap f (Node left right)
= Node (treeMap f left) (treeMap f right)
如何解决这个问题? (P/S不是一门功课的问题,试图了解在Haskell实现的树)
偏题:注意'f'必须是单调的以保持BST不变量。 – chi