|last call optimisation - 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.