javascript - WebAssembly 中应该如何编码递归?

标签 javascript webassembly

我正在编译a language of pure total functions到 WebAssembly。最复杂的可用构造是原始递归。我做了一些实验,似乎唯一可行的方法是构建一个蹦床抽象机,它在某种字节码上运行,将递归转换为迭代。有更好的策略吗?

最佳答案

嗯,你当然可以在 Wasm 中简单地使用递归,但它不会是尾递归。从您的问题中尚不完全清楚这是否是一项要求。

具有显式尾部调用的扩展已 proposed对于瓦斯姆来说。该提案目前处于 Wasm 提案流程的“第 3 阶段”,并已在 V8 和(正在进行的)Safari 中实现,这意味着它有望很快实现标准化。

在那之前,是的,如果您依赖尾部调用语义,则必须使用某种蹦床。

关于javascript - WebAssembly 中应该如何编码递归?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74592589/

相关文章:

javascript - 动画文本向上滑动并使用 jquery 替换为另一个文本

javascript - angularjs:在选择时将复选框更改为图像

javascript - 为什么 r.js 将 JS 合并压缩,然后将所有文件复制到输出目录?

javascript - "in"运算符如何处理非字符串键?

javascript - 在 Rust web 程序集中访问 UInt8ClampedArray

webassembly - block 参数在 WebAssembly 中如何工作(具有多值支持)?

c++ - 是否有一个选项不自动将所有前导下划线 _ 导出到 emscripten 中的函数?

javascript - 为什么某些查询失败?

javascript - WebAssembly.instantiate 既没有调用,也没有在 v8 嵌入中捕获

javascript - 使用 Javascript 或 WebAssembly 进行图像插值