函数式编程【一】

什么是函数式编程?

函数式编程是一种声明式的编程范式,我们按顺序应用纯函数来解决复杂问题。函数接受一个输入值并产生一个输出值,而不受程序的影响。函数式编程主要关注解决什么问题,并使用表达式而不是语句。函数式编程主要在数学函数方面表现出色,其中值之间没有任何相关性,并且不使用面向对象编程中使用的共享状态和可变数据等概念。

函数式编程概念

函数式编程是由各种核心概念构建而成的,我们将在下面进行探讨:

一等函数

函数式编程中的一等函数被视为数据类型变量,并且可以像其他变量一样使用。这些一等变量可以作为参数传递给函数,或存储在数据结构中。

递归

与面向对象编程不同,函数式编程不使用“while”或“for”循环或“if-else”语句。函数式程序避免创建每次执行时产生不同输出的结构。相反,递归函数重复调用自身,直到达到所需的状态或解决方案,称为基本情况。

不可变性

在函数式编程中,我们无法修改变量一旦被创建。其原因是我们希望在程序运行时保持程序的状态。最佳实践是为每个函数编写程序,以产生相同的结果,而不考虑程序的状态。这意味着当我们创建变量并赋值时,我们可以轻松地运行程序,完全知道变量的值将保持恒定,永远不会更改。

纯函数

纯函数构成了函数式编程的基础,并具有两个主要属性:

如果给定相同输入,则产生相同输出
它们没有副作用
纯函数与不可变值很好地配合,因为它们描述了声明性程序中输入与输出之间的关系。由于纯函数是独立的,这意味着它们可重用、易于组织和调试,使程序具有灵活性和适应性。使用纯函数的另一个优点是记忆化。这是指我们在计算给定输入的输出后,缓存并重用结果。

高阶函数

接受其他函数作为参数或返回函数作为输出的函数称为高阶函数。这个过程在每次迭代时将函数应用于其参数,并返回一个接受下一个参数的新函数。

函数式编程的优势

易于调试

由于纯函数产生与给定输入相同的输出,这意味着它们没有任何更改或任何其他隐藏的输出。函数式编程函数是不可变的,这也意味着更容易快速检查代码中的错误。

惰性求值

函数式编程采用惰性求值的概念,即只有在需要时才评估计算。这使得程序能够重用先前计算产生的结果。

支持并行编程

由于函数式编程使用不可变变量,因此创建并行程序很容易,因为它们减少了程序中的更改量。每个函数只需要处理一个输入值,并保证程序状态将保持恒定。

易于阅读

函数式编程中的函数易于阅读和理解。由于函数被视为值、不可变,并且可以作为参数传递,因此更容易理解代码库和目的。

高效

由于函数式程序不依赖于任何外部源或变量来运行,它们在整个程序中易于重用。这使它们更有效,因为不需要额外的计算来获取程序或在运行时运行操作。

函数式编程的缺点

术语问题

由于其数学根源,函数式编程具有许多术语,可能难以向非专业人士解释。像“纯函数”这样的术语可能会让想要了解更多关于函数式编程的人望而生畏。

递归

尽管递归是函数式编程中最好的特性之一,但使用它的成本很高。编写递归函数需要更高的内存使用,这可能是代价高昂的。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容