title: Currying: Get a callable object even when applying all arguments
body: <p>Suppose that I have the following code:</p>
  
  <pre><code>from pymonad.Reader import curry
  
  @curry
  def fun_ab(a, b):
    return fancy_stuff_with_ab(a, b)
  
  f = fun_ab(a, b) # Function is called...
  # ...while I'd actually like to have a function object with all args bound:
  f()
  </code></pre>
  
  <p>I do <em>currying</em> but when I apply all arguments, I'd still like to get a function object and not yet have the function called because the functions acts as a parameter to another function.</p>
  
  <p><strong>An option would be to use lambda, another one to use partial - but what is the most elegant way to achieve what I want?</strong></p>