La limitation fondamentale est simplement que la JVM ne fournissent pas de queue appelle dans son byte code et, par conséquent, il n'y a pas de moyen direct pour une langue construite sur la JVM de fournir queue appelle elle-même. Il existe des solutions de contournement qui peuvent obtenir un effet similaire (par exemple, le trampoline), mais elles sont le coût exorbitant d'une affreuse performance et d'obscurcir l'intermédiaire généré le code qui fait un débogueur inutile.
Si la JVM ne peut pas supporter toute la production-qualité fonctionnelle des langages de programmation jusqu'à ce que le Soleil de mettre en œuvre des appels tail dans la JVM elle-même. Ils ont discuté pendant des années mais j'en doute, ils seront jamais mettre en œuvre des appels tail: il sera très difficile parce qu'ils ont prématurément optimisé leur VM avant de mettre en œuvre ces fonctionnalités de base, et le Soleil de l'effort est fortement axé sur la dynamique des langues plutôt que de langages fonctionnels.
Par conséquent, il est un argument très fort que la Scala n'est pas un vrai langage de programmation fonctionnel: ces langues ont considéré la queue appels est une caractéristique essentielle depuis le Régime a d'abord été introduit il y a 30 ans.