title: the for-comprehension with assignment loops in wrong order
body: <p>given <code>val l = List( List(0), List(1) )</code></p>
  
  <p><strong>The for-loop :</strong></p>
  
  <pre><code>for {
    x &lt;- l
    _ = println(x)
    y &lt;- x
  } {println(y)}
  </code></pre>
  
  <p>//would prints :  </p>
  
  <pre><code>List(0)  
  List(1)  
  0  
  1 
  </code></pre>
  
  <p>The prints are in the wrong order !!  </p>
  
  <p>Isn't it be translated into the following? 
  <strong>the translation of for-loop :</strong> </p>
  
  <pre><code>l.foreach(
    x =&gt; {
      println(x)
      x.foreach(y =&gt; println(y))
    }
  )
  
  
  List(0)  
  0  
  List(1)  
  1  
  
  ---
  </code></pre>
  
  <p><strong>My Questions:</strong>  </p>
  
  <ol>
  <li>Why the for-loop is not executed by intuitive order ? (I was expecting the result is of the second example using foreach )</li>
  <li>Is my translation wrong ? </li>
  <li>Why we must assign something (e.g. <code>_ = print()</code>) in for-condition part?  (just a <code>print()</code> will not compile  )</li>
  </ol>