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

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

以上是关于柯里化--函数式编程--总结的主要内容,如果未能解决你的问题,请参考以下文章

函数式编程之柯里化

前端学习之函数式编程—柯里化

函数式编程之一柯里化

函数式编程:纯函数&柯里化&组合函数

翻译JavaScript 中的函数式编程:函数组合与柯里化

js函数式编程-柯里化