函数式编程已经有比较长的历史了,如今的动态语言,很大程度上也受到了函数式编程(反过来名叫命令式编程)的启发。
在函数式编程语言中,当你写了一个函数,接受一些参数,那么当你调用这个函数时,影响函数调用的只可能是你传进去的参数,而你得到的也只能够是计算结果。因此,一个void的方法,是没有任何意义的。如果传入了引用类型的参数,也是不合要求的。
在函数式编程中访问状态是十分安全的,因为状态不会改变,我可以把一个Point或List对象交给任意多的地方去访问,完全不用担心副作用。函数式编程的十分容易并行,因为我在运行时不会修改状态,因此无论多少线程在运行时都可以观察到正确的状态。两个函数完全无关,因此它们是并行还是顺序地执行便没有什么区别了。我们还可以有延迟计算,可以进行Memorization,经常使用递归作为控制流,这些都是函数式编程中十分有趣的方面。
在函数编程中,编程人员有一个天然框架用来开发更小的、更简单的和更一般化的模块, 然后将它们组合在一起。函数编程的一些基本特点包括:
- 支持闭包和高阶函数。
- 支持懒惰计算(lazy evaluation)。
- 使用递归作为控制流程的机制。
- 加强了引用透明性。
-
没有副作用。
在实际编程中,我们需要共享许多东西,比如显示器,比如打印机,比如某一块区域的资源,一旦这样的事情发生(这样的事情太频繁了,以至于函数式编程反而变得越来越稀缺),我们就需要额外地考虑很多因素。
老赵写了这么一个有趣的说明:
private int i = 0;
public lambda int Function( int p, Random random )//编译错误,不允许引用类型参数
{
int j = p + i;//编译错误,不允许使用i。
p++;//编译错误,不允许更改变量
int r = random.Next( j );//编译错误,不允许使用非lambda修饰的函数。
return r;
}
对于非常讨厌在脚本语言代码中大片大片地使用全局的或者共享变量来传值、存储状态的人来说,使用函数式编程的递归和回调思想,可以把很多丑陋的代码优美起来。
文章系本人原创,转载请注明作者和出处
分享到:
相关推荐
显示了从命令式编程到函数式编程的过渡。 介绍了lambda演算,如何向其添加类型以及如何使用ML来实现基本的功能编程,多态性,异常和命令式功能。
英文原版 scala函数式编程 function programming in scala
Functional Programming in C#.pdf C# 的函数式 编程 。 hope its help
主要介绍了JavaScript函数式编程(Functional Programming)纯函数用法,结合实例形式分析了javascript函数式编程中纯函数的函数依赖、所指透明等概念相关原理及使用技巧,需要的朋友可以参考下
主要介绍了JavaScript函数式编程(Functional Programming)箭头函数(Arrow functions)用法,结合实例形式分析了javascript函数式编程中箭头函数相关概念、原理、用法及操作注意事项,需要的朋友可以参考下
Bird Wadler.Introduction to Functional Programming 一本介绍函数式编程参考书,函数式编程由于F#正在流行。
主要介绍了JavaScript函数式编程(Functional Programming)组合函数(Composition)用法,结合实例形式分析了javascript函数式编程中组合函数的概念、原理、用法及操作注意事项,需要的朋友可以参考下
本书提供了类型理论的形式系统,并开发了程序和证明的示例。 从功能编程的角度来看,本书强调了系统语言与传统语言之间的差异。
描述如何将高级功能语言转换为称为lambda演算的中间语言,以及如何使用惰性图约简来实现。
主要介绍了JavaScript函数式编程(Functional Programming)声明式与命令式,结合实例形式分析了JS声明式与命令式相关概念、原理、定义及使用方法,需要的朋友可以参考下
Java 8新特性之Lambda与函数式编程.pdf
Learning C++ Functional Programming by Wisnu Anggoro English | 10 Aug. 2017 | ISBN: 1787281973 | ASIN: B06WVD7CVT | 304 Pages | AZW3 | 2.4 MB Key Features Modularize your applications and make them ...
主要介绍了JavaScript函数式编程(Functional Programming)高阶函数(Higher order functions),结合实例形式分析了javascript函数式编程高级函数的概念、原理、用法及相关操作注意事项,需要的朋友可以参考下
Functional Programming in Scala.pdf Scala 的函数式 编程 hope its help
函数式编程语言实现,了解及掌握函数式编程语言的必读书籍。
最新关于函数式编程在Python中的应用