Wie Sie vielleicht wissen, gibt es Funktionen höherer Ordnung in OCaml, wie fold_left, fold_right, Filter etc.fold_tree in OCaml
Auf meinen Kurs in die funktionale Programmierung hatte Funktion mit dem Namen fold_tree eingeführt, die so etwas wie fold_left ist/rechts, nicht auf Listen, sondern auf (binären) Bäumen. Es sieht wie folgt aus:
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);;
Wo Baum wie folgt definiert ist:
type 'a tree =
Node of 'a tree * 'a * 'a tree |
Leaf;;
OK, hier ist meine Frage: Wie funktioniert die fold_tree Funktion Arbeit? Kannst du mir ein paar Beispiele geben und in menschlicher Sprache erklären?
Vielen Dank für ein großartiges Beispiel ;). Es half mir, Grundlagen zu verstehen, jetzt brauche ich etwas Schwierigeres. – equrts
** f benötigt 3 Argumente, alle gleichen Baumtypen und gibt die gleichen zurück. ** Einer ist der Baumtyp, die anderen beiden sind Akkumulatoren eines Typs, die mit dem Standardwert übereinstimmen ein Blatt. – nlucaroni
@nlucaroni: Es wurde für dieses spezielle Beispiel formuliert, aber ansonsten hast du recht. –