title: Tuple bang patterns
body: <p>I understand that in:</p>
  
  <p><code>f x = x + 1 where !y = undefined</code></p>
  
  <p>the meaning of the bang pattern is that <code>y</code> is to be evaluated before <code>f</code>.</p>
  
  <p>Similarly:</p>
  
  <p><code>f x = x + 1 where !(!a, !b) = (undefined, undefined)</code></p>
  
  <p>the meaning is the same, w.r.t <code>x</code> and <code>y</code>.</p>
  
  <p>But what do the bang patterns mean in:</p>
  
  <p><code>f x = x + 1 where (!a, !b) = (undefined, undefined)</code></p>
  
  <p>It doesn't seem to cause undefined to be evaluated. When do in-tuple bang patterns come into effect? If the pattern's tuple is forced? Can anyone give an example where <code>(!a, !b) = (..)</code> differs from <code>(a, b) = (..)</code>?</p>