casper78 a écrit :
Je voudrais, donc, comment convaincre Java de faire de la récursivité terminale.
|
Java (comme nombre de langages) n'optimise pas la récursivité terminale.
Tu ne peux pas demander à java d'optimiser des tail-recs.
0x90 a écrit :
Il ne me semble pas que Java ait la moindre garantie de l'appliquer quand ça semble pourtant possible
|
Non seulement il n'y a aucune garantie mais ce n'est à ma connaissance absolument jamais fait, en tout cas sur le runtime Sun.
Après dans d'autres langages il existe des compilos pouvant parfois le gérer (me semble que GCC le fait quand certaines optims sont activées, et LLVM en est capable) mais se reposer là dessus quand c'est pas imposé par le langage rend le code absolument non portable
Dans les langages non fonctionnels, j'en ai pas encore vu qui demandaient impérativement l'optimisation de tail-rec, et même dans les langages fonctionnels ou multiparadigmes à tendance fonctionnels c'est pas nécessairement impératif (e.g. la spec de Common Lisp ne demande pas à ce que les implés optimisent la tail rec, par contre les Revised Reports [les specs/standards scheme] imposent l'optimisation)
Message édité par masklinn le 15-11-2008 à 13:16:24
---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody