Bref il fait le travail que tu estime être du domaine du compilateur
J'avais bien compris qu'il voulait gérer sa pile tout seul mais, de ce que je comprends, il s'y prend n'importe comment. Tel était mon reproche. ;-)
C'est comme pour son calcul de complexité, on ne sait pas trop quel algorithme il a en tête. Par exemple, le type des ensembles, en OCaml, est implémenté par des arbres binaires équilibrés. Certaines fonctions de parcours, qui sont toutes récursives (on ne peut faire autrement dans le langage), ne sont pas terminales et n'ont pas besoin de l'être. Elles occupent sur la pile un espace linéaire par rapport à la hauteur de l'arbre, hauteur qui est en log (n) (et non n log (n)) où n est la taille de l'ensemble : le risque de débordement est quasi nul. On pourrait les écrire en CPS (continuation passing style) pour occuper un espace constant avec des récursives terminales, ce qui reviendrait à réifier la pile sur le tas (un peu comme greendev), mais ce serait moins efficaces et cela sans réelles raisons.
Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.
[^] # Re: Loupé
Posté par kantien . En réponse au lien La récursivité sur linuxfr. Évalué à 3.
J'avais bien compris qu'il voulait gérer sa pile tout seul mais, de ce que je comprends, il s'y prend n'importe comment. Tel était mon reproche. ;-)
C'est comme pour son calcul de complexité, on ne sait pas trop quel algorithme il a en tête. Par exemple, le type des ensembles, en OCaml, est implémenté par des arbres binaires équilibrés. Certaines fonctions de parcours, qui sont toutes récursives (on ne peut faire autrement dans le langage), ne sont pas terminales et n'ont pas besoin de l'être. Elles occupent sur la pile un espace linéaire par rapport à la hauteur de l'arbre, hauteur qui est en
log (n)(et nonn log (n)) oùnest la taille de l'ensemble : le risque de débordement est quasi nul. On pourrait les écrire en CPS (continuation passing style) pour occuper un espace constant avec des récursives terminales, ce qui reviendrait à réifier la pile sur le tas (un peu comme greendev), mais ce serait moins efficaces et cela sans réelles raisons.Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.