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

  • 相关阅读:
    A计划
    edu_6_4_1
    edu_6_2_2
    edu_6_3_1
    hdu 1205 吃糖果【鸽巢原理】
    float 为什么不能用== ,或者大于等于,或者小于等于
    素数筛法及其优化
    hdu 1106 排序
    hdu 1164 Eddy's research I
    java 格式化输出 printf 总结
  • 原文地址:https://www.cnblogs.com/feng9exe/p/11172077.html
Copyright © 2011-2022 走看看