title: Top-level functions privately sharing a scope
body: <p>In scheme, it is possible to use <code>set!</code> to create two (or more) functions which share a private scope between them:</p>
  
  <pre><code>(define f1 #f) ; or any other "undefined" value
  (define f2 #f)
  
  (let ((private some-value) (another-private some-other-value))
    (set! f1 (lambda ... &lt;use of private variables&gt; ...))
    (set! f2 (lambda ... &lt;use of private variables&gt; ...)))
  </code></pre>
  
  <p>or by using a third variable:</p>
  
  <pre><code>(define functions
    (let ((private some-value) (another-private some-other-value))
      (list (lambda ... &lt;use of private variables&gt; ...)
            (lambda ... &lt;use of private variables&gt; ...))))
  
  (define f1 (car functions))
  (define f2 (cadr functions))
  </code></pre>
  
  <p>However, both of these seem inelegant, due to the use of <code>set!</code> in the first and the left-over variable <code>functions</code> in the second. Is there a way to do this without either?</p>