Що дуже просто, що таке оптимізація хвоста? Більш конкретно, що таке невеликі фрагменти коду, де його можна було застосувати, а де ні, з поясненням чому?
Я думаю, є @tailrecанотація, яка гарантує, що компілятор оптимізує рекурсивну функцію хвоста. Ви просто ставите це перед декларацією? Чи працює це також, якщо Scala використовується в режимі сценаріїв (наприклад, за допомогою :load <file>REPL)?
Через два роки після того, як робить-jvm-предотвратить-хвост-оптимізацію викликів , здається, є реалізація прототипу, і MLVM вже деякий час перелічує цю функцію як "прото 80%". Чи немає активного інтересу з боку Sun / Oracle у підтримці хвостових викликів, чи просто, що хвостові виклики "[...] судилися виходити на друге місце у кожному …
Сьогодні я виявив команду "time" в unix і подумав, що використаю її, щоб перевірити різницю у виконанні між рекурсивними хвостами та нормальними рекурсивними функціями в Haskell. Я написав такі функції: --tail recursive fac :: (Integral a) => a -> a fac x = fac' x 1 where fac' 1 y …
Заголовок запитання може бути дещо дивним, але справа в тому, що, наскільки мені відомо, взагалі немає нічого, що могло б говорити проти оптимізації виклику хвоста. Однак, переглядаючи проекти з відкритим кодом, я вже натрапив на кілька функцій, які активно намагаються перешкодити компілятору виконувати оптимізацію хвостового виклику, наприклад, реалізація CFRunLoopRef, яка …