【发布时间】:2014-09-12 22:23:08
【问题描述】:
When should I write my functions in curried form?与我的想法不符,需要改正。
作为我学习link 的一部分,这是我从函数柯里化中理解的。下面是一个例子:
def curry2(f):
"""Returns a function g such that g(x)(y) == f(x, y)
>>> from operator import add
>>> add_three = curry2(add)(3)
>>> add_three(4)
"""
def g(x):
def h(y):
return f(x, y)
return h
return g
在任何应用程序中,如果我知道参数的数量是固定的(比如 2 个参数)并且
函数名称是normalise_range(say),然后我将定义def normalise_range(x, y):函数并通过调用normalise_range(x, y)直接在我的应用程序中使用它。
在任何应用程序中,如果我知道,参数的数量是固定的(比如 2 个参数),
但函数名称不同(可以是normalise_range/average/我不知道..),
然后我将使用def curry2(f):,如上所示,它将接受所有带两个参数的函数(固定)。
我的问题:
- 我的理解正确吗?
- 如果是,我们可以考虑对可变数量参数的函数进行柯里化吗?
【问题讨论】:
-
为什么你决定是否使用一个函数与你是否提前知道名字有关?只要你可以打电话给
curry2(f),你就可以打电话给f(x, y)而不用curry。 -
@user2357112 我明白你的意思了。
-
@Trilarion 让我先了解一下,什么时候使用函数柯里化,然后我会想到比较
Function Currying和partial application
标签: python functional-programming