提问人:Tando 提问时间:4/29/2023 最后编辑:Tando 更新时间:4/29/2023 访问量:107
在函数式编程中使用咖喱/咖喱函数有什么好处?
What is the benefit of using curried/currying function in Functional programming?
问:
如果您考虑作为 的初始值设定项,您不应该使它们松散耦合并 DI 初始值设定项(或任何其他方式),尤其是当您需要多个初始值设定项时?还是我误解了 FP 中咖喱函数的基本概念?inner_multiply
multiply
def inner_multiply(x):
def multiply(y):
return x * y
return multiply
def curried_multiply(x):
return inner_multiply(x)
multiply_by_3 = curried_multiply(3)
result = multiply_by_3(5)
print(result) # Output: 15 (3 * 5)
答:
5赞
Mark Seemann
4/29/2023
#1
您可以定义一个完全泛型的函数,如下所示:curry
def curry(f):
return lambda x: lambda y: f(x, y)
假设,为了在 OP 中重现示例,您还定义了一个如下所示的函数:multiply
def multiply(x, y):
return x * y
您现在可以使用以下命令部分申请:multiply
curry
>>> multiply_by_3 = curry(multiply)(3)
>>> multiply_by_3(5)
15
此示例立即使用 ,但好处是您不必这样做。相反,您可以在一个地方部分应用函数,传递部分应用的函数,并在代码库的完全不同部分调用它。multiply_by_3
评论
inner_multiply
x