title: zip function requires also a second list, how can it work with only one argument list
body: <p>I started learning Haskell and found a nice exercise. It's the following:</p>
  
  <pre><code>grouping: Int -&gt; [Student]-&gt;[(Team, Student)]
  grouping teamNumber = zip ys
                        where ...
  </code></pre>
  
  <p>So, the exercise wants that i try to fill the rest. The function should do the following:
  Example : <code>grouping 2 ['Mark','Hanna','Robert','Mike','Jimmy'] = [(1,'Mark'),(2,'Hanna'),(1,'Robert'),(2,'Mike'),(1,'Jimmy')]</code>.</p>
  
  <p>So, we are building teams which consists of two Students, and the last Student 'Jimmy' has no teammates.</p>
  
  <p>Then, I also look up what the predefined function <code>zip</code> does. It gets two list arguments and connects each element of the lists to a tuple to build a list of tuples.</p>
  
  <p>My idea:
  1) I try to build two functions "grab" and "infinite". They are looking as following:</p>
  
  <pre><code>grap :: Int -&gt; [a] -&gt; [a]
  grab _ [] = []
  grab n (x:xs) = if n &lt;= 0 then [] else x : grab (n-1) xs  
  
  infinite :: Num a =&gt; a -&gt; [a]
  infinite x = x : infinite(x+1)
  </code></pre>
  
  <p>So, what they do is: With <code>infinite</code> I want to create an infinite list. And <code>grap</code> should take <code>n</code> elements of that. Example <code>grap 2 (infinite 1) = [1,2]</code>. </p>
  
  <p>I use these two in the first line of my <em>where</em>-declaration to fulfill the given function from above.
  So, I have:</p>
  
  <pre><code>grouping: Int -&gt; [Student]-&gt;[(Team, Student)]
  grouping teamNumber = zip ys
                        where 
                        xs = grap teamNumber (infinite 1)
  </code></pre>
  
  <p>So, <code>xs</code> is now my first list of <code>zip</code>, especially the integer-list. </p>
  
  <p>But now my question: <code>zip</code> as predefined function requires also a second list, especially the list of the names of the students, but in the given function they give zip only one argument, namely the <code>ys</code> as a list. How can I understand that?</p>