# currying vs partial function application

The easiest way to see how they differ is to consider a real example. Let's assume that we have a function Add which takes 2 numbers as input and returns a number as output, e.g. Add(7, 5)returns 12. In this case:

• Partial applying the function Add with a value 7 will give us a new function as output. That function itself takes 1 number as input and outputs a number. As such:

Partial(Add, 7); // returns a function f2 as output

// f2 takes 1 number as input and returns a number as output


So we can do this:

f2 = Partial(Add, 7);
f2(5); // returns 12;
// f2(7)(5) is just a syntactic shortcut

• Currying the function Add will give us a new function as output. That function itself takes 1 number as input and outputs yet another new function. That third function then takes 1 number as input and returns a number as output. As such:

Curry(Add); // returns a function f2 as output

// f2 takes 1 number as input and returns a function f3 as output
// i.e. f2(number) = f3

// f3 takes 1 number as input and returns a number as output
// i.e. f3(number) = number


So we can do this:

f2 = Curry(Add);
f3 = f2(7);
f3(5); // returns 12


In other words, "currying" and "partial application" are two totally different functions. Currying takes exactly 1 input, whereas partial application takes 2 (or more) inputs.

Even though they both return a function as output, the returned functions are of totally different forms as demonstrated above.

• 本文已收录于以下专栏：

## [Python for Data Analysis] Python Basic--Function

argument可以是scalar type, 也可以是list等data structure,可以是function object都可以Positional arguments and keywo...
• 2016年02月10日 09:43
• 184

## Currying & Partial[applied] function 初体验

• PENGYUCHENG32109
• 2016年03月22日 22:58
• 315

## 函数Currying和Partial Application的比较

• u010708434
• 2014年10月04日 14:02
• 394

## [Python] partial改变方法默认参数

Python 标准库中 functools 中有许多对方法hen
• lzz957748332
• 2014年08月18日 10:33
• 1941

## 关于vs2013中使用partial类后仍提示某成员变量不存在时的问题解决

• u010116861
• 2015年08月10日 14:34
• 482

## 5.5.3.1 散函数应用（PARTIAL FUNCTION APPLICATION）

5.5.3.1 散函数应用（PARTIALFUNCTION APPLICATION）   要展示对函数的这种新理解情况，非常重要，让我们把注意力返回到列表。假设有一个数字列表，我们想要给列表中的每...
• 2014年10月24日 20:08
• 548

## 【python】偏函数 functools partial

Python的functools模块提供了很多有用的功能，其中一个就是偏函数（Partial function）functools.partial的作用就是，把一个函数的某些参数（不管有没有默认值）给...
• u010141025
• 2014年12月12日 16:35
• 2997

## 《STL源码剖析》—— stl_config.h

• bolike
• 2014年02月12日 22:26
• 1370

## 函数柯里化function currying

• power8988
• 2017年08月25日 07:23
• 69

## "Partial Class"详解

• bruesz
• 2007年12月19日 14:36
• 672

举报原因： 您举报文章：currying vs partial function application 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)