title: In Scheme, how can I understand "(define (f x . y) (cons x y))"
body: <p>I'm new to Scheme, here I get in trouble with dotted list, here is an example:</p>
  
  <p><code>(define (f x . y) (cons x y))</code></p>
  
  <p>When I enter:  <code>(f 1 2 3)</code> the result is <code>'(1 2 3)</code>. Yes, it returns a list, and at this time</p>
  
  <p><code>x =&gt; 1</code> and <code>y =&gt; '(2 3)</code>.</p>
  
  <p>My question is how could the interpreter know this when <code>f</code> takes unfixed length of args?</p>