MyException - 我的异常网
当前位置:我的异常网» C++ » 为可爱的lambda散分解决方案

为可爱的lambda散分解决方案(3)

www.MyException.Cn  网友分享于:2013-03-20  浏览:6次


相对于 -〉next这个操作
Pair 集合 具有闭包性质


sjjf 22:45:14
会回头来看看 lambda的 入.x 入.y x 这种玩意儿把
sjjf 22:46:58
在这个等式里面, 入.x 入.y x 对于 入.y x 来说,x是自由变量,对于 入.x 入.y x 来说,x就是约束变量了

sjjf 22:49:38
可有了解 lambda的beta规约的几个策略的?
sjjf 22:50:45
如全beta规约,规范顺序规约,按名调用规约,按值调用规约 这几种策略的
sjjf 22:51:14
好吧,顺便吹一下lambda的水

sjjf 22:53:11
1.lambda的语法:
a.任何一个变元都是项
b.如果M,N都是项,那么 (MN)也是项--函数应用
这意味着 将N应用到 M,也就是把N当作参数,传给M
c.如果M是项,x是变元,那么 λx.M也是项--函数抽象
也就是函数定义。 可以认为函数体是M ,参数是x
d.仅仅由这些规则归纳定义的符号串也是项

sjjf 22:54:57
这是lambda的语法
呆熊(116455762) 22:55:30
浪费了,《什么是数学》那本书不在……

sjjf 22:58:44
2.alpha变换: 入x.M=入y.M[x/y] 
sjjf 23:00:52
这段话的意思是,x在入x.M这个项中是一个约束变量,
用y来代替x这个量后,得到另外一个等价的式子
入y.M[x/y]

α变换:http://blog.sina.com.cn/s/blog_4aa1dcb9010009uz.html

sjjf 23:04:06
x/y意思就是用y来代替x

sjjf 23:04:50
alpha变换的意思就是只作简单的符号变换,
用来区分约束变量和自由变量
sjjf 23:05:27
实际上,如果你足够强悍,能够一样就能看得清楚
各个变量的辖域
sjjf 23:05:44
那么可以不用做alpha变换

sjjf 23:07:20
这是alpha变换,
接着到beta规约了
(见上述blog)
sjjf 23:15:19
(λx.M)N 规约为 M[x/N] 
sjjf 23:16:10
意思就是表达 (M N)的意思,
就是将 N替换掉 M的参数,得到的结果
sjjf 23:16:59
规约很简单,但是规约确实最重要的
sjjf 23:17:06
规约有好几种策略
sjjf 23:17:44
对于一个复杂的表达式,进行规约后才能得到比较简单的
表达式
sjjf 23:18:04
第一种规约策略叫做:全beta规约
sjjf 23:19:36
回到全beta规约吧,全beta规约的意思是
可以在任意的地方的某个约式进行规约,也就是没有章法了
sjjf 23:20:16
第二种策略: 规范顺序规约
最左边,最外边的约式总是第一个规约
sjjf 23:21:25
第三种策略:按名调用策略
不允许在抽象内部规约

sjjf 23:23:20
第四种策略:按值调用规约
只有最外层的约式可以规约,并且只有当该约式的右边已经规约到一个值时才能进行规约
sjjf 23:24:18
入x.m
sjjf 23:24:26
就叫做函数抽象
sjjf 23:26:02
c语言貌似是按值调用规约策略
sjjf 23:26:53
所以c语言实现不了刚才的那种js的closure (这点我没有确定)

sjjf 23:31:28
好了,现在再来看看
<SCRIPT LANGUAGE="JavaScript">
<!--
var aa = function(e){
return function(p){
alert(e+"-"+p);
};
};
aa("abc")("ef");
//-->
</SCRIPT>
以及
抽象的形式
入.x 入.y x
sjjf 23:32:18
js用的应该是按名调用规约
sjjf 23:34:36
入.x 入.y x 的意思是 
我们传入第一个参数 “abc”进去后规约得到了一个项 入.y M
再传入 ef 后,项 入.y M 被规约,从而求出 最后的结果

sjjf 23:37:39
我只是看到
<http://blog.csdn.net/g9yuayon/archive/2007/04/18/1568980.aspx>
sjjf 23:37:56
这篇文章里面提到了,所以我才开始思考的

sjjf 23:38:18
找到了最初的closure的来源
sjjf 23:38:24
是lisp

sjjf 23:40:09
对了,关于多个参数
sjjf 23:40:21
纯lambda是只有一个参数的
sjjf 23:40:55
但是,多个参数是可以通过curry变换达到
sjjf 23:41:47
比如 入.x 入.y x 完全可以用 表达成 f(x,y)的方式

lisp 函数的 lambda 对应:
(defun build()
(compile "make -k all tags"))
对应
入.x M N
N== make -k...
M = compile
------解决方案--------------------
up
受教了
------解决方案--------------------
up
------解决方案--------------------
我要哈哈!
------解决方案--------------------
受教育啊
------解决方案--------------------
up
------解决方案--------------------
偶也看看lambda
------解决方案--------------------
按我所受的教育,closure是"close over"的意思。

------解决方案--------------------
up
------解决方案--------------------
神j呀
------解决方案--------------------

文章评论

程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
Java程序员必看电影
Java程序员必看电影
编程语言是女人
编程语言是女人
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
程序员必看的十大电影
程序员必看的十大电影
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
程序员和编码员之间的区别
程序员和编码员之间的区别
鲜为人知的编程真相
鲜为人知的编程真相
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
10个调试和排错的小建议
10个调试和排错的小建议
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
每天工作4小时的程序员
每天工作4小时的程序员
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
漫画:程序员的工作
漫画:程序员的工作
那些争议最大的编程观点
那些争议最大的编程观点
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
一个程序员的时间管理
一个程序员的时间管理
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
代码女神横空出世
代码女神横空出世
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
老程序员的下场
老程序员的下场
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
中美印日四国程序员比较
中美印日四国程序员比较
我的丈夫是个程序员
我的丈夫是个程序员
程序员的鄙视链
程序员的鄙视链
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
总结2014中国互联网十大段子
总结2014中国互联网十大段子
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
 程序员的样子
程序员的样子
程序员都该阅读的书
程序员都该阅读的书
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
为什么程序员都是夜猫子
为什么程序员都是夜猫子
程序员应该关注的一些事儿
程序员应该关注的一些事儿
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有