正如你可能知道,有OCaml中高阶函数,如fold_left,fold_right,过滤等fold_tree OCaml中
在我的函数式编程过程中已经引入的功能命名fold_tree,这是一样的东西fold_left /对,不在列表上,但在(二进制)树上。它看起来像这样:
let rec fold_tree f a t =
match t with
Leaf -> a |
Node (l, x, r) -> f x (fold_tree f a l) (fold_tree f a r);;
当树被定义为:
type 'a tree =
Node of 'a tree * 'a * 'a tree |
Leaf;;
OK,这里是我的问题:请问在fold_tree功能工作?你能给我一些例子并用人类语言解释吗?
谢谢你的一个很好的例子)。它帮助我了解基础知识,现在我需要更难的东西。 – equrts 2010-11-16 11:32:32
** f需要3个参数,所有相同类型的树并返回相同的结果**一个是树的类型,另外两个是任何相同类型的累加器,与默认值匹配一片树叶。 – nlucaroni 2010-11-16 15:44:36
@nlucaroni:这是特别的例子,但除此之外你是对的。 – 2010-11-16 18:53:17