3 ms·
That's not quite right. In Scala, the annotation is there so you get a complier error if it does not do the optimization. It doesn't affect when the compiler ac
by patrickthebold 6y ago
That's not quite right. In Scala, the annotation is there so you get a complier error if it does not do the optimization. It doesn't affect when the compiler actually does the annotation.
As you can imagine, there are cases where the developer is counting on the optimization but the code isn't such that it can be made.
- waynesonfire 6y agoYour post got me curious and I did some googling. I think this explains it, https://softwareengineering.stackexchange.com/questions/157684/what-limitations-does-the-jvm-impose-on-tail-call-optimization https://softwareengineering.stackexchange.com/questions/1576... Looks like it's a scalac optimization that doesn't always work hence the need for the annotation to give the developer feedback. There is also a link to a Closure discussion board exploring why Clojure doesn't have the annotation, by design. I didn't read it as I'm not that interested.