title: passing 2 arguments to a function in Haskell
body: <p>In Haskell, I know that if I define a function like this <code>add x y = x + y</code><br>
  then I call like this <code>add e1 e2</code>. that call is equivalent to <code>(add e1) e2</code><br>
  which means that applying <code>add</code> to one argument <code>e1</code> yields a new function which is then applied to the second argument <code>e2</code>.</p>
  
  <p>That's what I don't understand in Haskell. in other languages (like Dart), to do the task above, I would do this</p>
  
  <pre><code>add(x) {
    return (y) =&gt; x + y;
  }
  </code></pre>
  
  <p>I have to explicitly <code>return</code> a function. So does the part "yields a new function which is then applied to the second argument" automatically do underlying in Haskell? If so, what does that "hiding" function look like? Or I just missunderstand Haskell?</p>