2010-10-31 4 views
4

étant donné que CLR soutient l'optimisation des appels de queue je me demandais si Mono, et par conséquent Ironpython fonctionnant sur Mono a un support pour TCO?Optimisation d'appel de queue dans Mono/Ironpython

+0

Vous pouvez tester cela assez facilement. Il suffit de mettre en place une récurrence d'appel de queue infinie et de la laisser fonctionner; soit il explose, soit il ne l'explose pas. –

+0

Si vous pouvez exécuter un simple 'def f(): return f()' et l'utilisation de la mémoire reste constante, vous savez qu'au moins un certain niveau basique d'optimisation des appels est en cours, bien sûr cela ne vous dit pas ses limites . –

+0

duplication possible de [Le runtime mono gère-t-il déjà l'optimisation des appels de queue comme requis par la spécification IL?] (Http://stackoverflow.com/questions/3816148/does-the-mono-runtime-already-handle-tail-call -optimisation-comme-requis-par-le-il) – tzot

Répondre

4

Je ne peux pas donner une réponse définitive, mais il y a beaucoup de preuves dans les forums (par exemple, here) que Mono n'utilise pas une convention d'appel callee-pops-arguments, il ne peut pas (facilement) supporter la queue appels. Il y a quelques bogues non résolus, here et here, indiquant que F # attend toujours cela.

+0

Merci beaucoup. +1 – srean

+0

Salut @Marcelo Je n'ai pas encore accepté de réponse au cas où une réponse faisant autorité se présenterait. Je soupçonne que votre réponse sera aussi définitive qu'elle ne le sera dans un proche avenir. Existe-t-il une convention SO pour l'acceptation dans de telles situations, je suis nouveau ici donc je ne sais pas. – srean

+0

Il n'y a pas de règles strictes. Donnez-lui un moment, puis cliquez sur la case à cocher lorsque vous pensez avoir vu la meilleure réponse. –