Skip to content

Commit 6dad6b1

Browse files
committed
补充
1 parent 3dda492 commit 6dad6b1

File tree

1 file changed

+1
-0
lines changed

1 file changed

+1
-0
lines changed

2015/1.markdown

+1
Original file line numberDiff line numberDiff line change
@@ -938,6 +938,7 @@
938938
+ 通过将闭包实现为函数+环境链的方式,在不支持闭包的host语言中实现闭包
939939
+ Lambda lifting
940940
+ 增加额外参数、并在compile time-binding的调用点显示传递参数,以这种方式改写lambda移除free variable,最后将lambda改写成普通全局函数,使得不需要创建真正的closure对象;对于会作为first class function传值的lambda,仍然只能创建闭包对象(如果host语言不支持闭包,那么得进行closure conversion)
941+
+ 函数内的nested function,如果不用做first class value的话,是非常好的lambda lifting对象,Scala就是这么做的
941942
+ Tail-call optimization with trampolining
942943
+ 如果解释器的host语言或者虚拟机不支持尾调用优化,为了实现包含尾递归的语言,需要对语言进行trampolining的变换
943944
+ 函数式语言处理的一个可能步骤

0 commit comments

Comments
 (0)