3

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

4

3 回答 3

5

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

于 2008-12-06T03:28:50.347 回答
2

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

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

于 2008-12-05T17:15:20.227 回答
1

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

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

于 2008-12-07T20:55:30.747 回答