传说中的函数式编程

Posted 不止代码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了传说中的函数式编程相关的知识,希望对你有一定的参考价值。

看到一个关于函数式编程(functional programming)的视频,平时也常听到这个词,总结一下。


函数式编程就是执行一些数学函数,并不局限于某种编程语言。函数是输入到输出的映射(mapping)。比如f(x)=x^2g(x, y) = f(x) + f(y)、 h(x)=1 if x>0 else 0等等。


函数f不能修改输入值x,即输入是不可变的(immutable),和计算机的变量很不一样。计数x=x+1在函数式编程里是不存在的,循环for(i=0; i<10; i++)也不行,因为它修改了循环变量i的值。


函数式编程也叫没有变量的编程,它有其他的方式来实现计数和循坏。保证了输入的这种不可变性有什么好处呢?一是函数行为更确定,二是很适合分布式计算。


短短一行f(x)==f(x),可能true,可能false,还可能segfault,非常刺激,何解?两次调用f(x)时变量x的值可能会变,如果第一个函数把x的内存释放了,第二个函数越界访问内存就会引发段错误(segfault)。函数式编程没变量,也无法释放内存,因此不存在这个问题,函数的行为更确定,更按套路出牌。


现在这年代,单核提速难,多核成为主流。两个核叫酷睿i3,四个核叫酷睿i7,成百上千个核叫云计算,数量一上去,如何协调就很重要了。函数式编程中的任意两个函数互不影响,一个大计算任务可以很容易地拆成小任务,这种隔离使函数可以方便地分布式运行。



以上是关于传说中的函数式编程的主要内容,如果未能解决你的问题,请参考以下文章

函数式编程

函数式编程/命令式编程

web代码片段

html 将以编程方式附加外部脚本文件的javascript代码片段,并按顺序排列。用于响应式网站,其中ma

Python函数式编程,范围和变量。我哪里错了?

函数式编程思维在三行代码情书中的应用