最近,我使用标准 ML 学习了“编程语言” ,并且我已经学习了 currying 方法(或其他东西),所以我在 Python 中应用了它。 下面是简单的函数和柯里化(Currying)。
def range_new(x, y):
return [i for i in range(x, y+1)]
def curry_2(f):
return lambda x: lambda y: f(x, y)
def uncurry_2(f):
pass # I don't know it...
print(range_new(1, 10))
curried_range = curry_2(range_new)
countup = curried_range(1)
print(countup(10))
print(curried_range(1)(10))
结果如下。而且效果很好;使用 curry_2
我们可以创建一个新函数 (countup
)。但是,然后我想制作一个非 curry 函数。
但是,我不知道该怎么做。
我该怎么做?
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
最佳答案
最简单的解决方案是用取消柯里化(Currying)的代码再次包装柯里化(Currying)函数:
def uncurry_2(f):
return lambda x, y: f(x)(y)
uncurried_range = uncurry_2(curried_range)
print(uncurried_range(1, 10))
关于python - 如何取消 Python 中的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49379002/