长生不老药和延续传球风格

Elixir and continuation-passing style

Elixir 有类似 Scheme 的 call-with-current-continuation 吗?有没有办法捕获等待的堆栈帧并将其存储在变量中供以后使用?

Erlang/Elixir 没有经典的 call/cc 你会在类似 Scheme 的语言中找到。

不过,您可以只在 Elixir 中编写 CPS 样式的代码。您可以捕获函数中的当前闭包并将其传递并以这种方式手动切片您的计算。

编辑:我刚刚实现了 CPS 样式的 ANF 转换[1]。它可以作为灵感。

[1] https://gist.github.com/m1dnight/053494cdc35b89af6fe0b3b63283abd0