码迷,mamicode.com
首页 > 其他好文 > 详细

柯里化--函数式编程--总结

时间:2019-07-11 20:35:00      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:cti   注意   roc   上下文   efi   isp   另一个   其他   orm   

1、局部化函数、变量化(返回值化)函数;

2、局部化函数的栈捕获外部函数的变量为其上下文;

3、序列化调用;

4、尾调用,栈优化;

 

尾调用

In computer science, a tail call is a subroutine call performed as the final action of a procedure.

如果在某个函数的末尾调用了另一个函数,这个调用就称为尾调用。

我们举个例子吧,

(define (f a)

  (display a)

  (g 2))

 

(define (g b)

  (display b))

 

(f 1)

我们看到,函数f的末尾调用了函数g,(g 2)。

尾调用有什么好处呢?

一个基本的事实是,如果g是f的尾调用,g就可以不返回到f中,

而直接返回到f该返回的地方。

因为g是f的尾调用,g后面没有其他调用了,

(g 2)调用结束后就可以不必返回到f的函数体中了,而是直接返回到(f 1)处。

因此,调用g的时候,调用栈可以不增加,而是直接废弃f的调用环境即可。

注意,我们上面提到的是『不必返回到f的函数体中』,

因为不是每个语言都可以做到这一点,

这个语言特性,称为尾调用优化(tail call optimization)。

 

https://zhuanlan.zhihu.com/p/34064655

柯里化--函数式编程--总结

标签:cti   注意   roc   上下文   efi   isp   另一个   其他   orm   

原文地址:https://www.cnblogs.com/feng9exe/p/11172077.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!