Comme vous le savez, il y a des fonctions d'ordre supérieur dans OCaml, comme fold_left, fold_right, filtrer, etc.fold_tree en OCaml
Sur mon cours de programmation fonctionnelle avait été fonction introduite le nom fold_tree, ce qui est quelque chose comme fold_left/right, pas sur les listes, mais sur les arbres (binaires). Il ressemble à ceci:
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);;
Où arbre est défini comme:
type 'a tree =
Node of 'a tree * 'a * 'a tree |
Leaf;;
OK, voici ma question: comment fonctionne la fonction fold_tree? Pourriez-vous me donner quelques exemples et expliquer en langage humain?
Merci pour un bon exemple ;). Cela m'a aidé à comprendre les bases, maintenant j'ai besoin de quelque chose de plus difficile. – equrts
** f prend 3 arguments, tous du même type de l'arbre et retourne la même chose. ** L'un est le type de l'arbre, les deux autres sont des accumulateurs de même type, étant cohérent avec la valeur par défaut associée à une feuille. – nlucaroni
@nlucaroni: Il a été formulé pour cet exemple particulier, mais sinon vous avez raison. –