title: function currying vs an ordinary callback method
body: <p>I'm trying to understand how the programming technique known as <em>currying</em> differs from an ordinary callback interface (such as the Observer/Observable interfaces in Java, or the classic Visitor design pattern).  </p>
  
  <p>I understand what currying is, I just don't understand why it's uniquely useful to the point that it requires its own terminology and language support.</p>
  
  <p>Could someone explain a programming situation that is better solved by currying than by a callback method?  What's the practical significance of the fact that currying uses a separate function for each argument?</p>
  
  <p>[update:] to summarize the answers I got: currying comes part and parcel with the fact that functions are "first class" citizens, ie objects that can be created and passed around like any other object reference.  This makes it possible to return a function from a function, in other words currying.  </p>
  
  <p>As for the reason why currying is useful, currying provides a syntax to let you concisely decorate function calls so that derived functions can be created with minimal boilerplate code overhead.  Whereas in java you might create several overloaded or "wrapper" methods for each partial parameter set which ultimately invoke a master method containing all the parameters, currying provides a lighter syntax that lets you generate these "function wrappers" as needed in your code.</p>