如何在DrScheme中实现Tail Call Optimization?

时间:2008-12-05 17:12:16

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

我听说蹦床是实施TCO的无效方式。 DrScheme(PLAI Scheme,技术上)如何做到这一点?它是以'正确'的方式做到的(也就是说,生成直接分支到尾部调用的汇编代码,而不是通过堆栈和trampolining)?

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

PLT计划的实施者在Google group中非常活跃,您可以从编写代码的人那里快速回答。

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

答案 2 :(得分:1)

Trampolines用于将Scheme代码转换为不支持Proper Tail Calls的目标语言X(C,Java等)的实现中。 PLT Scheme采用JIT编译 - 因此不需要蹦床。有关使用的确切实施策略,请在PLT邮件列表中提出问题。

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