xxleyi / learning_list

聚集自己的学习笔记
10 stars 3 forks source link

continuation 初探 #213

Open xxleyi opened 4 years ago

xxleyi commented 4 years ago

什么是 continuation 呢?该怎么理解和把握 continuation 呢?

lisp - scheme continuations for dummies - Stack Overflow

从这篇 SO 回答入手,是个不错的开始。

视角要切换到程序流,然后再来尝试理解它。

在程序流中,下一步做什么:

那我们在程序中,可以怎样控制下一个表达式或者语句呢?

在这种实现中,最简单的应用是函数栈

函数调用在本质上是一种涉及到执行上下文切换的程序流控制操作

像其它的 if while for break label,都只是在同一个执行上下文内部控制程序流流转。

那么,能不能有一种手段,可以更轻松的控制程序流流转的同时,切换执行上下文呢?

continuation 就是这样一种手段

而我们熟知的迭代器,生成器,便是它的特例。

要实现这样一种能力:执行上下文栈出栈时,将弹出的执行上下文保存,而不是销毁,并在合适的时机,将这个执行上下文重新入栈