注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

云淡风轻

云淡风轻近午天,傍花随柳过前川。

 
 
 

日志

 
 

函数式编程  

2006-12-03 14:15:50|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
最近在关注函数式编程的东西。所谓函数式编程,一般说函数作为第一类成员,可以像普通数据成员一样,做为参数,做为返回值等。其实这里所说的函数,既不像C/C++/java里的函数,也不像python里def或lambda定义的函数,也不像javascript里的function函数,其实是数学上的函数:f(x):x|-> f(x)。差别只有一点:数学上的函数,给定一个输入,只会有固定的输出,不管函数是在什么时候调用的。而编程语言里的函数,本质上是不具备这一特点的,最明显的例子是随机数函数了。
造成这种情况的原因是:赋值语句。赋值语句的出现,导致变量不再是数值,而是一块存储空间,空间里放着数值。怎么说呢?比如说,“孙悟空”,或者是一只鸟,或者是一条鱼,当然如果是一坨也没办法,不论如何,它是一个变量,值是会变的,这是数学上的变量。“聚宝盆”,可能拿出来是金子,也可能是个人,里面的东西是变的,这就是程序里的变量了。如果我们写一个返回变量的尾巴的函数,孙悟空变在一只鸟,那就返回鸟尾,我们还不够本事在函数里让孙悟空变在一条鱼。如果是聚宝盆,那就不一样了,至少有人能让它变出不同东西出来的。
函数式编程的好处是,函数完全没有副作用,给定的输入,一定是相应的输出,不管是在哪调用的,什么时候调用的。多线程的程序写起来就容易多了。
坏处当然也是明显的,随机函数怎么写呢?


要胡扯原来都这么难,不写了,有空再补全。
  评论这张
 
阅读(160)| 评论(2)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017