Почему скаляр не может оптимизировать хвостовую рекурсию в определенных сценариях?

Почему нетт скалярScala компилятор) оптимизировать хвостовую рекурсию?

Вызовы кода и компилятора, демонстрирующие это:

> cat foo.scala 
class Foo {
 def ifak(n: Int, acc: Int):Int = {  
   if (n == 1) acc  
   else ifak(n-1, n*acc)  
 }
}

> scalac foo.scala
> jd-gui Foo.class
import scala.ScalaObject;

public class Foo
  implements ScalaObject
{
  public int ifak(int n, int acc)
  {
    return ((n == 1) ? acc : 
      ifak(n - 1, n * acc));
  }
}

Ответы на вопрос(2)

Ваш ответ на вопрос