title: Stripping out let in Haskell
body: <p>I should probably first mention that I'm pretty new to Haskell. Is there a particular reason to keep the <code>let</code> expression in Haskell?</p>
  
  <p>I know that Haskell got rid of the <code>rec</code> keyword that corresponds to the Y-combinator portion of a <code>let</code> statement that indicates it's recursive. Why didn't they get rid of the <code>let</code> statement altogether? </p>
  
  <p>If they did, statements will seem more iterative to some degree. For example, something like:</p>
  
  <pre><code>let y = 1+2
      z = 4+6
      in y+z
  </code></pre>
  
  <p>would just be:</p>
  
  <pre><code>y = 1+2
  z = 4+6
  y+z
  </code></pre>
  
  <p>Which is more readable and easier for someone new to functional programming to follow. The only reason I can think of to keep it around is something like this:</p>
  
  <pre><code>aaa = let y = 1+2
            z = 4+6
            in  y+z
  </code></pre>
  
  <p>Which would look this this without the <code>let</code>, which I think ends up being ambiguous grammar: </p>
  
  <pre><code>aaa = 
    y = 1+2
    z = 4+6
    y+z
  </code></pre>
  
  <p>But if Haskell didn't ignore whitespace, and code blocks/scope worked similar to Python, would it be able to remove the <code>let</code>?</p>
  
  <p>Is there a stronger reason to keep around <code>let</code>?</p>
  
  <p>Sorry if this question seems stupid, I'm just trying to understand more about why it's in there.</p>