【发布时间】:2010-11-15 22:32:23
【问题描述】:
如您所知,OCaml 中有更高阶的函数,例如 fold_left、fold_right、filter 等。
在我的函数式编程课程中引入了名为 fold_tree 的函数,它类似于 fold_left/right,不是在列表上,而是在(二叉树)树上。它看起来像这样:
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;;
好的,这是我的问题: fold_tree 函数是如何工作的?你能给我一些例子,用人类语言解释一下吗?
【问题讨论】:
标签: functional-programming ocaml higher-order-functions