python - 如何取消 Python 中的函数?

标签 python functional-programming currying

最近,我使用标准 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/

相关文章:

python - 解决问题 - 编码面试问题?

python - fixture 加载与 loaddata 一起工作,但在 Django 的单元测试中静默失败

C++ 和柯里化(Currying)

haskell - 如何在haskell中查看模块功能的实现代码?

ruby - 用 Ruby 折叠和柯里化(Currying)

javascript - Ramda帮助: Pointfree implementation w/placeholders to direct arguments

python - 打印 Pandas 数据框时抑制描述性输出

python - 如何在 Python 中实现 "also if"?

haskell - 程序程序员的功能代码片段列表?

functional-programming - 正确理解F#预计算逻辑