One of the more subtle costs of full call comes from allowing arbitrary numbers of return values. This overhead can be avoided in local calls to functions that always return the same number of values. For efficiency reasons (as well as stylistic ones), you should write functions so that they always return the same number of values. This may require passing extra nil arguments to values in some cases, but the result is more efficient, not less so.
When efficiency notes are enabled ( see section efficiency-notes), and the compiler wants to use known values return, but can't prove that the function always returns the same number of values, then it will print a note like this:
In order to implement proper tail recursion in the presence of known values return ( see section tail-recursion), the compiler sometimes must prove that multiple functions all return the same number of values. When this can't be proven, the compiler will print a note like this: