Currying - Contrast With Partial Function Application

Contrast With Partial Function Application

Currying and partial function application are often conflated. The difference between the two is clearest for functions taking more than two arguments.

Given a function of type, currying produces . That is, while an evaluation of the first function might be represented as, evaluation of the curried function would be represented as, applying each argument in turn to a single-argument function returned by the previous invocation. Note that after calling, we are left with a function that takes a single argument and returns another function, not a function that takes two arguments.

In contrast, partial function application refers to the process of fixing a number of arguments to a function, producing another function of smaller arity. Given the definition of above, we might fix (or 'bind') the first argument, producing a function of type . Evaluation of this function might be represented as . Note that the result of partial function application in this case is a function that takes two arguments.

Intuitively, partial function application says "if you fix the first arguments of the function, you get a function of the remaining arguments". For example, if function div stands for the division operation x/y, then div with the parameter x fixed at 1 (i.e., div 1) is another function: the same as the function inv that returns the multiplicative inverse of its argument, defined by inv(y) = 1/y.

The practical motivation for partial application is that very often the functions obtained by supplying some but not all of the arguments to a function are useful; for example, many languages have a function or operator similar to plus_one. Partial application makes it easy to define these functions, for example by creating a function that represents the addition operator with 1 bound as its first argument.

Read more about this topic:  Currying

Famous quotes containing the words contrast, partial, function and/or application:

    Armies, for the most part, are made up of men drawn from simple and peaceful lives. In time of war they suddenly find themselves living under conditions of violence, requiring new rules of conduct that are in direct contrast to the conditions they lived under as civilians. They learn to accept this to perform their duties as fighting men.
    Gil Doud, U.S. screenwriter, and Jesse Hibbs. Walter Bedell Smith (Himself)

    And meanwhile we have gone on living,
    Living and partly living,
    Picking together the pieces,
    Gathering faggots at nightfall,
    Building a partial shelter,
    For sleeping and eating and drinking and laughter.
    —T.S. (Thomas Stearns)

    Our father has an even more important function than modeling manhood for us. He is also the authority to let us relax the requirements of the masculine model: if our father accepts us, then that declares us masculine enough to join the company of men. We, in effect, have our diploma in masculinity and can go on to develop other skills.
    Frank Pittman (20th century)

    The application requisite to the duties of the office I hold [governor of Virginia] is so excessive, and the execution of them after all so imperfect, that I have determined to retire from it at the close of the present campaign.
    Thomas Jefferson (1743–1826)