On Sunday, 10 July 2016 at 17:10:32 UTC, Dietrich Daroch wrote:
Annotating every callsite seems uncomfortable, being able to
perform TCO is a property of the function and not something
that might look call-site dependant.
You only need to annotate the location where the function calls
itself. The function might want some recursive calls to work
without tail recursion restrictions and at the same time use tail
recursion at the end.
Or do you mean that this should prevent all kinds of recursion?
That is a quite demanding analysis. For instance, the function
could get itself passed in as a parameter...