Como usted sabe, hay funciones de orden superior en OCaml, como fold_left, fold_right, etc. filtrarfold_tree en OCaml
En mi curso en la programación funcional se había introducido función llamada fold_tree, que es algo así como fold_left/right, no en listas, sino en árboles (binarios). Se ve así:
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);;
Cuando el árbol se define como:
type 'a tree =
Node of 'a tree * 'a * 'a tree |
Leaf;;
OK, aquí está mi pregunta: ¿cómo funciona la función fold_tree? ¿Podría darme algunos ejemplos y explicar en lenguaje humano?
Gracias por un gran ejemplo ;). Me ayudó a entender lo básico, ahora necesito algo más difícil. – equrts
** f toma 3 argumentos, todos del mismo tipo del árbol y devuelve el mismo. ** Uno es el tipo del árbol, los otros dos son acumuladores del mismo tipo, siendo consistentes con el valor predeterminado que coincide con una hoja. – nlucaroni
@nlucaroni: Fue redactado para este ejemplo en particular, pero de lo contrario tiene razón. –