| ||Definition:|| |
Normally when procedure A calls procedures B, C, .., Z, the environment of procedure A is only discarded when procedure Z returns and procedure A itself terminates. Using last call optimisation, A's environment is discarded as Z is called. This allows arbitrarily deep nesting of procedure calls without consuming memory to store useless environments.
A special case of this is tail recursion optimisation where the last procedure called is the calling procedure itself.