「功能平等:为什么2+2并不等于4.0。」

你是否曾经认为,2加上2等于4吗?对于任何人来说,这似乎都是一个简单的问题,但实际上,答案并非如此简单。

在程序设计世界中,我们有一个理念:功能平等。换句话说,每个函数都应该具有相同的能力和权利,而不论它们实现的具体细节是什么。

这意味着,如果我们使用两个函数A和B来实现一个函数C,那么C应该与A和B的任何功能有关的情况下,与它们的使用方式无关。

但是,当我们尝试在这个世界中进行数学运算时,事情变得更加复杂了。因为数学运算之间存在一些奇怪的“平等”关系,这些关系可以与“功能平等”相矛盾。

比如说,如果我们定义了一个函数“plus”,它接受两个数字作为参数并返回它们的和。在现实世界中,我们会认为2+2等于4,因为这是数学运算的基本规则之一。

然而,在函数式编程中,这似乎并不是那么显然。因为我们可以使用级数展开等技巧,得到:

2+2=2×2+2×1!+2×0!+2x(-1)!+…

这里的“!”表示阶乘,而这个级数展开可以一直进行下去。因此,在函数式编程中,2+2并不等于4.0,而是一个无限大的级数。

这意味着什么呢?对于程序员们来说,这意味着我们需要重新思考我们实现数学运算的方式。我们不能再只是依靠基本运算规则,而必须考虑到更广泛的数学概念,如级数展开和无限集合。

在这个过程中,我们可能会发现一些非常奇怪的行为,例如两个非常小的数字相乘可以得到一个非常大的结果。但这并不意味着我们犯了错误,而是因为我们使用了更广泛的数学概念来进行运算。

在功能平等的世界中,我们不能再将数学视为一种简单的规则集合,而是要以一种更宽广的方式理解它。我们需要扩展我们的思维,以接纳更为奇特的数学概念,并将其融合到我们的程序设计中。

因此,让我们不再试图简化数学,而是努力理解它的深层次的本质。让我们摒弃那些固有的思维定式,拥抱无穷大和无穷小,去迎接一个更美妙的世界。「功能平等:为什么2+2并不等于4.0。」

详情参考

了解更多有趣的事情:https://blog.ds3783.com/