• [^] # Re: Exemple judicieux ?

    Posté par . En réponse à la dépêche Apprendre la programmation fonctionnelle avec le MOOC OCaml. Évalué à 1.

    Il n'y a pas de zero dans le cas des arbres !

    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.