假設我有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