title: Scheme zip function with possible uneven lists
body: <p>I know this question has been asked before, and my solution is the same as many of the answers but I have a special test case that won't work correctly with the common solution to this problem.</p>
  
  <p>The solution that I have found for the zip problem like many others is</p>
  
  <pre><code>(define (zip l1 l2)(map list l1 l2))
  </code></pre>
  
  <p>. . .which works great with given arguments such as </p>
  
  <pre><code>(zip '(a b c) '(1 2 3)) =&gt; ((a 1) (b 2) (c 3))
  </code></pre>
  
  <p>but I also want the zip function to work for cases where my arguments do not match length like </p>
  
  <pre><code>(zip '(a b c) '(1)) =&gt; ((a 1) (b ()) (c ()))
  </code></pre>
  
  <p>I have not found a solution to this problem and not really sure how to approach it where each list can be any length. </p>