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

Pattern Guard

这里集中展示 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.

Pattern Guard

语法

pattern guard 为 match arm 或其他 pattern 分支附加额外布尔条件。

语义

guard 只有在 pattern 本身匹配成功后才继续求值。

pattern guard 是 level-1 正式能力。

guard 中可见当前 arm 已绑定的 pattern 变量。

guard 不会把本来非穷尽的 match 变成穷尽;exhaustiveness 分析对带 guard 的 arm 保持保守。

Usage

match expr {
	Point(x, y) if x == y => on_diag(x)
	Point(x, y) => off_diag(x, y)
}

注释:guard 中可以使用 pattern 已经引入的 xy,但 guard 的求值发生在 pattern 匹配成功之后。

边界

guard 只出现在已经完成 pattern match 的分支位置,不引入独立控制流语法。