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

中吴南顾惟一笑

成功法则就是那19个字

 
 
 

日志

 
 

Lambda 表达式  

2016-01-07 14:51:43|  分类: R&D |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在支持高阶函数的语言中,lambda表达式本质上是代码块,可以赋给变量,作为参数,或从函数返回,又称为闭包

C的函数指针不同,可以随意传递,但丢失了其相关的语义scope。

有人简单将lambda表达式等同于匿名函数,实际上,其含义更丰富,也更强大

首先,语法不同 range(1, 5).map(x => x * x); //-> [1, 4, 9, 16, 25]

从函数式语言的观点看pure function是实现了类型到类型的mapping或数学关系,包括用户定义类型
从而也就意味着output仅依赖于input,不会依赖于这个function scope外的任何状态,pure就是指没有side effect

lambda表达式也暗含了这一性质。

将purity概念延伸到数学上的Referential Transparency,也就是同样的输入对应同样的输出,我们可以把它当作可以预测的黑盒来看待
所以无参函数和void的函数不属于此范畴,因为它们的输入或输出是空集,这样的函数除非什么都不做,否则肯定有side effect。
Lambda表达式更严密的揭示了这种mapping关系。

所有这些原则都是服务于一个更重要的目的:函数组合。可以将一系列函数以松散的方式一起执行,一个函数的输入是另一个的输出。
从更细的粒度说,这就是“coding to interfaces”原则的体现,lambda表达式鼓励我们以声明式,模块化,可重用的方式创建程序。

  评论这张
 
阅读(53)| 评论(0)
推荐 转载

历史上的今天

评论

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

页脚

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