哈斯克尔我们走吧!好了,所以这里是目前使用的代码示例:哈斯克尔树列表
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