【问题标题】:How is Tail Call Optimization implemented in DrScheme?DrScheme 中如何实现尾调用优化?
【发布时间】:2008-12-05 17:12:15
【问题描述】:

我听说蹦床是实施 TCO 的一种无效方式。 DrScheme(PLAI Scheme,技术上)是如何做到的?它是否以“正确”的方式进行(即生成直接分支到尾调用的汇编代码,而不是通过堆栈和蹦床)?

【问题讨论】:

    标签: c optimization programming-languages scheme tail-call-optimization


    【解决方案1】:

    MzScheme(现为 PLT Scheme)的主要实现者 Matthew Flatt 在 2008 年 6 月告诉我,他们曾经编译为虚拟机代码,在这种情况下,很容易编写一个执行适当尾调用的 VM。然而,现在系统已经足够成熟,在 x86 上他们使用简单的 JIT。无论哪种情况,都没有蹦床——PLT 计划的人知道他们的业务。

    【讨论】:

      【解决方案2】:

      PLT Scheme 的实现者在他们的Google group 中非常活跃,在这里您可以从编写代码的人那里得到快速的答复。

      不过,我不确定他们是否读过 SO,所以你最好的选择可能是在那里问。

      【讨论】:

        【解决方案3】:

        Trampolines 用于将 Scheme 代码翻译成不支持正确尾调用的目标语言 X(C、Java 等)的实现。 PLT Scheme 采用 JIT 编译 - 因此不需要蹦床。对于使用的具体实施策略,请在 PLT 邮件列表中提问。

        PS:您可以在ReadScheme.org 上提供的各种“Compile Scheme to C”论文中阅读更多关于蹦床的信息。

        【讨论】:

          猜你喜欢
          • 2019-07-10
          • 1970-01-01
          • 1970-01-01
          • 2011-03-31
          • 2014-04-06
          • 1970-01-01
          • 2012-08-19
          • 2011-05-27
          • 2019-04-20
          相关资源
          最近更新 更多