柯里化--函数式编程--总结
Posted feng9exe
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了柯里化--函数式编程--总结相关的知识,希望对你有一定的参考价值。
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
以上是关于柯里化--函数式编程--总结的主要内容,如果未能解决你的问题,请参考以下文章