gpt4 book ai didi

interpreter - 持续传递风格与积极修剪调用堆栈?

转载 作者:行者123 更新时间:2023-12-02 02:37:56 25 4
gpt4 key购买 nike

我正在考虑在基于 Actor 的语言的解释器中使用类似 CPS 的东西。

函数参数在变体数组中传递,延续在同一个数组中返回,所以一个简单的函数

def add (x,y) => x + y

所以来自读取/评估/循环的调用将是

print( add(7, 5) )

进入时会是

[&add, x, y, &print, _, &repl, ...]

其中 _ 是写入函数返回值的空槽。

在下一步执行时,参数变为

[&print, 12, &repl, ...]

然后

[repl, ...]

等等。 C中的实现基本是

for (;;)
args = (args[0].function_pointer)(args);

检查是否超出 args 数组的末尾并分配更多空间。

参数是连续的,作为对象的“延续”只是参数的一个子集。

如果我要实现一流的延续,他们将需要克隆参数数组;您也不会免费获得关闭。主要目标是能够很好地生成简单的机器代码,并允许您暂停和恢复执行。

虽然这个方案的灵感来自于对 CPS 的思考,但它并不完全是 CPS,并且非常类似于经过积极修剪的 C 堆栈的外观 - 只是事件变量和每个函数的返回点。

是否有这种样式的名称,尤其是参数数组?它有点像蹦床 + 堆栈,尽管我习惯称其为“堆栈”的更多是执行的历史,而不是执行的 future 。

最佳答案

这几乎就是 Forth。拥有一流的堆栈与拥有延续非常相似。

关于interpreter - 持续传递风格与积极修剪调用堆栈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/521057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com