 <p>In tail position, the bound variable doesn't need to exist. Only the variables available when the procedure is created is available at the call time. </p> <pre class="lang-scm prettyprint-override"><code>(define (some-function) ;; only global variables exist at this point (let ((c (read-char))) ;; c exists for a brief time (some-function))) </code></pre> <p>After the variable <code>some-function</code> is evaluated inside the procedure, then <code>c</code> is removed before applying whatever <code>some-function</code> was evaluated to. There exists only one <code>c</code> at a time.`</p> <p>Imagine this slightly altered version:</p> <pre class="lang-scm prettyprint-override"><code>(define (some-function previous) (let ((c (read-char))) (some-function c))) </code></pre> <p>Here we have the same except <code>some-function</code> and <code>c</code> is evaluated before <code>c</code> and <code>previous</code> are removed and the apply is started.</p> <p>It is a requirement that the procedures and variables are handled in this way. It's called <a href="https://en.wikipedia.org/wiki/Tail_call_optimization" rel="nofollow">tail call optimization</a>.</p> <p>When a procedure gets created, the variables that is used in them needs to exist for the duration of the procedures existence:</p> <pre class="lang-scm prettyprint-override"><code>(define (some-function2) (let ((c (read-char))) (lambda () c))) (define test (some-function2)) (define test2 (some-function2)) </code></pre> <p>Now. The variable is moved to be something connected to the procedure and still not a part of the environment when the <code>some-function2</code> call is finished. The procedures are called closures and the <code>c</code> in each are closure variables that live on even after the binding procedure is done. If you are used to other languages you can think of these variables that live on to be on the heap. These "free variables" are what made Scheme special when it was created in the 70s and every programming language since is more or less based on this principle.</p>