我用 C/C++ 的混合方式编写了一个小的 Scheme 解释器,但是我还没有实现 proper tail calls 。
我知道经典的 Cheney on the MTA algorithm ,但是是否有其他好的方法来实现这个呢?我知道我可以将 Scheme 堆栈放在堆上,但仍然不是 proper elimination,因为标准规定应支持无限数量的主动尾部调用。
我已经尝试过 longjmps,但迄今为止,我认为它只适用于非相互递归的尾部调用。
主流的基于 C 的 Scheme 如何实现正确的尾递归呢?