Bon je vais encore passer pour un gricheux en disant que le fold de votre exemple est un peu bizard car il n'a rien d'un fold (aka reduce dans d'autre parlances). Il devrait avoir comme signature ; 'a coll -> 'b -> ('b -> 'a -> 'b) -> 'b. 'b est le type de la valeur initiale (qui devrait être la chaîne vide dans votre cas) et est aussi le type du résultat (une chaîne). Bref Je suis d'avis que lorsque l'on réutilise des noms de concepts qui ont une définition bien établie, autant utiliser le concept ou adopter une autre terminologie. Et ce d'autant plus pour un document pédagogique !
Autre détail: il me semble que vos définitons des fonctions show_xx souffrent d'un "do not repeat yourself". C'est un peu dommage de présenter un language fonctionnel (i.e. ou le calcul in fine est basé sur la composition de fonction) et de rater une si belle occasion de montrer un code qui pourrait être encore plus élégant. 'fin bon, les couleuvres toussa
[^] # Re: Exemple judicieux ?
Posté par benja . En réponse à la dépêche Apprendre la programmation fonctionnelle avec le MOOC OCaml. Évalué à 0.
Bon je vais encore passer pour un gricheux en disant que le fold de votre exemple est un peu bizard car il n'a rien d'un fold (aka reduce dans d'autre parlances). Il devrait avoir comme signature ; 'a coll -> 'b -> ('b -> 'a -> 'b) -> 'b. 'b est le type de la valeur initiale (qui devrait être la chaîne vide dans votre cas) et est aussi le type du résultat (une chaîne). Bref Je suis d'avis que lorsque l'on réutilise des noms de concepts qui ont une définition bien établie, autant utiliser le concept ou adopter une autre terminologie. Et ce d'autant plus pour un document pédagogique !
Autre détail: il me semble que vos définitons des fonctions show_xx souffrent d'un "do not repeat yourself". C'est un peu dommage de présenter un language fonctionnel (i.e. ou le calcul in fine est basé sur la composition de fonction) et de rater une si belle occasion de montrer un code qui pourrait être encore plus élégant. 'fin bon, les couleuvres toussa