我在考虑像CPS用在解释了一个演员为基础的语言。

该函数参数被传递在变体的阵列,并继续在相同阵列中返回,所以一个简单的功能

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

所以从读/ EVAL /回路的呼叫将是

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堆栈可能看起来像 - 只有生存变量,并返回每个功能点。

是否有这种风格的名称,特别是参数数组?这有点蹦床+堆栈,虽然我已经习惯了叫“堆”更多的是历史,而不是执行的未来。

有帮助吗?

解决方案

这是几乎等。具有第一级堆叠是非常喜欢具有延续。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top