哈斯克爾我們走吧!好了,所以這裏是目前使用的代碼示例:哈斯克爾樹列表
data Tree a = Node (Tree a) (Tree a) | Leaf a | Empty deriving (Show)
main = do
let my_tree = Node (Node (Leaf [1,2,4,9]) (Leaf [3,5,5,8,5])) (Leaf [2,7,5,5,2])
cc my_tree
bb my_tree
aa my_tree
cc my_tree
print("Done")
只需在創建樹保存詮釋名單和需要3個職能工作AA,BB,CC:
CC - 簡單地輸出一棵樹
BB - 廣告,每個值+2
AA - 輸出列表就像每個值:長度,最小值,最大值]
現在有,做這一切的代碼幾乎是完美的,我把它放在鍵盤(問我,如果你想):http://codepad.org/ ??????? 現在你可以看到AA最後輸出也是一棵樹
它可能是一個速戰速決,但我不能算出它 - 這樣AA將輸出不是樹,但一個[這些]列表:
[length param,minimum param,maximum param]
換句話說,有人知道如何將它作爲列表輸出,而不是在樹內?
所以在輸出代替:
Node (Node (Leaf [4,1,9]) (Leaf [6,0,8])) (Leaf [5,2,7])
將
[[4,1,9],[6,0,8],[5,2,7]]
我相信有些事情在這裏修改:
fmap3 ff (Node l r) = Node (fmap2 ff l) (fmap2 ff r)
fmap3 ff (Leaf x) = Leaf (ff x)
任何人?
這是功課? – Paul 2010-11-08 17:57:30