Avec votre version je suis obligé de l'écrire "valeur_de_depart + (fold f g t)" ou "fold f g (Tree(Node(valeur_de_depart),t)", je trouve ça vachement mois agréable à utiliser pour cet usage.
C'est la fonction f qui joue le rôle de cette constante
J'attends toujours la démonstration, qq chose me dit que ça n'est pas si trivial...
a graine est une constante
La graine s'appelle préférablement variable d'accumulation, et elle n'est évidemment pas constante pendant la traversée. là ou avec votre "fold", f et g sont fixes... Qui peut le plus, peut le moins ;-)
En étant pédant, j'ajouterais que toute valeur dans un langage fonctionnelle pur est constante.
et on te dit que comme on est dans un langage fonctionnel cela peut aussi être une fonction.
heu... je ne pensais pas donner l'impression d'avoir besoin de cette explication
Il n'y a que toi que cela perturbe, tu es la première personne que je rencontre qui voit là un problème.
Je suis désolé, appeler par le même nom deux fonctions avec des sémantiques différentes, je trouve cela perturbant. Surtout lorsqu'une des sémantiques est dans la librairie standard et reprise par d'autres librairies populaires.
Quand on parcourt une liste on termine toujours sur Nil
Faux, avec fold_right, on commence avec Nil.
et c'est la qu'on utilise la graine.
Encore faux. Cf. fold_left.
Désolé, mais je faisais juste une remarque pour essayer de rendre votre prochain exposé plus pédagogique. Je n'ai pas besoin que l'on m'explique ce que j'aurais mal compris alors que j'exprime juste un fait: l'usage en ocaml est de nommer le reduce "fold", et pas votre catamorphisme.
[^] # Re: Exemple judicieux ?
Posté par benja . En réponse à la dépêche Apprendre la programmation fonctionnelle avec le MOOC OCaml. Évalué à 1.
Avec votre version je suis obligé de l'écrire "valeur_de_depart + (fold f g t)" ou "fold f g (Tree(Node(valeur_de_depart),t)", je trouve ça vachement mois agréable à utiliser pour cet usage.
J'attends toujours la démonstration, qq chose me dit que ça n'est pas si trivial...
La graine s'appelle préférablement variable d'accumulation, et elle n'est évidemment pas constante pendant la traversée. là ou avec votre "fold", f et g sont fixes... Qui peut le plus, peut le moins ;-)
En étant pédant, j'ajouterais que toute valeur dans un langage fonctionnelle pur est constante.
heu... je ne pensais pas donner l'impression d'avoir besoin de cette explication
Je suis désolé, appeler par le même nom deux fonctions avec des sémantiques différentes, je trouve cela perturbant. Surtout lorsqu'une des sémantiques est dans la librairie standard et reprise par d'autres librairies populaires.
Faux, avec fold_right, on commence avec Nil.
Encore faux. Cf. fold_left.
Désolé, mais je faisais juste une remarque pour essayer de rendre votre prochain exposé plus pédagogique. Je n'ai pas besoin que l'on m'explique ce que j'aurais mal compris alors que j'exprime juste un fait: l'usage en ocaml est de nommer le reduce "fold", et pas votre catamorphisme.