【发布时间】:2020-11-01 04:58:36
【问题描述】:
在像Haskell这样的纯函数式编程语言中,纯粹性和函数式编程的结合产生了很好的特性,即所有函数都没有副作用,因此更容易推理、抽象、调试、测试等.
但是,我想知道在主要不是功能性的多范式语言中构造函数式编程的目的是什么。例如,Python 有诸如 map、filter、lambda、reduce 之类的东西,但这些东西中的大多数都被认为是“非 Pythonic”(与列表推导相反,它可能被认为是功能性的)猜测)。在python 中,函数可以被视为对象,但除此之外,它看起来更像是一种 OOP 语言。
即使在像 Scala 这样的语言中,也不能保证函数是纯函数/函数式的,而且它很可能是 OOP 风格的(就像你加载 java 库时一样,无论如何)。您需要通读每个函数以确定它是否为纯函数。
所以我的问题仍然存在:FP 构造在多范式语言中的目的是什么?
【问题讨论】:
-
我已经就这个主题写了一整封course。即使编译器可能不会强制执行某些属性(或者根本没有编译器),因此无法保证这些属性适用于您的程序,但它仍然更加可靠和可预测。此外,您还可以实现无与伦比的代码重用程度。当然,这是基于意见的。
标签: functional-programming programming-languages