title: Why is a || go(x) a tail call ins call and 1 + go(x) is not?
body: <p>I am learning Scala with the use of <a href="https://www.manning.com/books/functional-programming-in-scala" rel="nofollow noreferrer">Functional Programming in Scala</a> book. Its Github companion notes say that <code>a || go(x)</code> is still a tail call-optimised recursion while <code>1 + go(x)</code> is not. How is that computation different and why can compiler optimise one but not the other?</p>