title: Usefulness (as in practical applications) of Currying v.s. Partial Application in Scala
body: <p>I'm trying to understand the advantages of currying over partial applications in Scala. Please consider the following code:</p>
  <pre><code>  def sum(f: Int =&gt; Int) = (a: Int, b: Int) =&gt; f(a) + f(b)
  
    def sum2(f: Int =&gt; Int, a: Int, b: Int): Int = f(a) + f(b)
  
    def sum3(f: Int =&gt; Int)(a: Int, b: Int): Int = f(a) + f(b)
    
    val ho = sum({identity})
    val partial = sum2({ identity }, _, _)
    val currying = sum3({ identity })
  
    val a = currying(2, 2)
    val b = partial(2, 2)
    val c = ho(2, 2)
  </code></pre>
  <p>So, if I can calculate partially applied function that easy, what are the advantages of currying?</p>