用最简单的术语来说,什么是柯里化,为什么这种方法比传统的编程范式更受青睐?

In simplest term, what is currying and why should this approach be favored over traditional programming paradigm?

我很难通过 web 上的多个资源来理解柯里化。没有更直观的柯里化示例吗?

此外,与传统编程范式相比,它有哪些优势?是否可以在非函数式编程上实现柯里化?

想象一个具有多个参数的函数 add(a,b) = a + b。此函数将两个数字相加。现在想象一下,在某些情况下,您需要一个只接受一个参数的函数,并且您想要一个加 5 的函数。该函数可能如下所示:adds5(x) = 5 + x.

现在,在某些情况下,您需要一个加 5 的函数,而在其他情况下,您需要一个加 10 的函数。因此,与其编写仅对其他常量执行相同操作的各种函数,不如编写一个函数来执行return 将作为参数的常量添加到第一个函数的函数:adder(a) = (b) = a + b

函数addadder看起来很相似。 add 接受 2 个参数并将它们相加,adder return 是一个将 adder 的参数添加到它自己的参数的函数。

addadder 的转换称为柯里化。

因为这和函数有很大的关系,所以我想说,有了柯里化,那就是函数式编程。您可以使用任何编程语言进行函数式编程 - 毕竟,所有图灵完备语言都是等价的 ;-),但是在支持函数作为第一个 class 公民的函数式语言中,它要容易得多。