【发布时间】:2021-03-22 09:52:02
【问题描述】:
我正在寻找一种很好的实用方法来执行以下操作:
def add(x, y):
return x + y
def neg(x):
return -x
def c(x, y):
# Apply neg to inputs for add
_x = neg(x)
_y = neg(y)
return add(_x, _y)
neg_sum = c(2, 2) # -4
这似乎与柯里化有关,但我能找到的所有示例都使用只有一个输入变量的函数。我想要看起来像这样的东西:
def add(x, y):
return x + y
def neg(x):
return -x
c = apply(neg, add)
neg_sum = c(2, 2) # -4
【问题讨论】:
-
您希望
apply(g, f)创建一个新函数c,将函数g应用于其所有参数,然后将结果传递给函数f。这假设函数c和f接受相同数量的参数(可能是多个),并且c和f都返回一个值。那正确吗?我觉得可能还有其他一些情况,你想构造f(g(h(x)), g(h(y)))或h(f(g(x), g(y))),这可能没有足够的对称性。或者,如果您只是多次调用apply,有时使用单参数函数,也许它确实如此。
标签: python functional-programming currying