title: Difference between where bindings, let bindings and the single assignment operator (<-)
body: <p>I do not understand the difference between the three syntaxes:</p>
  
  <ul>
  <li><code>where    a = f (b)</code></li>
  <li><code>do    a &lt;- f (b)</code></li>
  <li><code>do    let a = f (b)</code></li>
  </ul>
  
  <p>I do understand somehow though that <code>a &lt;- f(b)</code> is different from the other two, in most cases where I tried all three worked. Also I read somewhere on the net that per block you should try to get along with one let binding only in order to be "idiomatic". But I never seem to manage.</p>
  
  <p>How do I decide what to use?</p>