正如你可能知道,有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