Chiba Logo CHIBA v0.6.13
CHIBA blog RSS feed
CHIBA / DOCS / LEVEL-1 SPEC

`reset`

这里集中展示 CHIBA level-1 specification,覆盖 core language、control flow、memory、patterns、IR lowering 与 package system 等实现边界。

The docs surface keeps CHIBA level-1 specification pages browsable inside the site, with direct paths into language, control flow, memory, pattern, and lowering rules.

reset

语法

reset 建立一个 delimited continuation 边界。

reset 也允许带 atom tag:

reset :tag {
	...
}

与之配套的 shift surface 采用 block 形式,而不是箭头 lambda 形式:

shift k {
	...
}

shift :tag k {
	...
}

语义

在 level-1 中,reset 同时具有:

  • 控制边界语义
  • answer type 边界
  • arena / region 边界

tagged reset 为后续需要显式指向某个控制边界的控制操作保留稳定命名入口。

Usage

let value = reset {
	1 + 2
}

注释:最简单的 reset 只是显式建立一个控制边界,整个 block 的结果就是 reset 表达式的结果。

let value = reset {
	1 + shift k {
		k(41)
	}
}

注释:这个例子展示 resetshift 提供最近的捕获边界,k 只恢复到当前 reset 为止。

let value = reset :parse {
	parse_step()
}

注释:tagged reset 给控制边界一个稳定名字,供后续需要显式指向该边界的控制操作使用。

边界

需要单独明确:

  • reset 的 surface syntax 细节
  • 与普通函数调用隐式 reset 的关系