我正在编译a language of pure total functions到 WebAssembly。最复杂的可用构造是原始递归。我做了一些实验,似乎唯一可行的方法是构建一个蹦床抽象机,它在某种字节码上运行,将递归转换为迭代。有更好的策略吗?
最佳答案
嗯,你当然可以在 Wasm 中简单地使用递归,但它不会是尾递归。从您的问题中尚不完全清楚这是否是一项要求。
具有显式尾部调用的扩展已 proposed对于瓦斯姆来说。该提案目前处于 Wasm 提案流程的“第 3 阶段”,并已在 V8 和(正在进行的)Safari 中实现,这意味着它有望很快实现标准化。
在那之前,是的,如果您依赖尾部调用语义,则必须使用某种蹦床。
关于javascript - WebAssembly 中应该如何编码递归?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74592589/