zoukankan      html  css  js  c++  java
  • 柯里化--函数式编程--总结

    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

  • 相关阅读:
    常用模块
    python里面的奇技淫巧
    day_06、面向对象(二)
    day_06、面向对象
    day_06、递归、二分查找
    day_05、内置函数、匿名函数
    day_05、迭代器、生成器
    day_04、函数
    php调用webservice接口
    php在命令行输出进度条
  • 原文地址:https://www.cnblogs.com/feng9exe/p/11172077.html
Copyright © 2011-2022 走看看