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

Tuple Value Representation

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

Tuple Value Representation

语法

该条目不新增 surface syntax,描述 tuple 的值表示。

语义

tuple 是固定元数、固定顺序的聚合值;其运行时表示可与 record、ADT 或 asm 多输出语义关联。

tuple representation 必须保留元素顺序与固定元数信息;这使它既能支撑普通 tuple literal,也能支撑 asm 多输出与多返回值风格的值承载。

在类型与布局语义上,tuple 可视为 positional row-backed value。字段名固定为 _1_2_3 …,从 1 开始编号。

因此:

(A, B, C) ~= { _1: A, _2: B, _3: C }

这里的 ~= 表示布局与字段语义对应,不表示 tuple surface 语法等同于 record literal。tuple 的字段名由位置生成,用户不能重排,也不能用普通 record 字段顺序规则改变其元数和顺序。

一元 tuple (a,) 的唯一字段是 _1。空 tuple () 是 unit,不是带字段的 tuple。

Usage

let p = (1, 2)
let (a, b) = p
let first = p._1
let second = p._2

注释:tuple representation 首先服务普通 tuple 值;asm 或多返回值只是在语言层复用同一 tuple 语义。p._1 / p._2 是位置字段访问,不是用户声明的 record 字段。

边界

小 tuple 的布局优化可由实现决定;但与 multi-return 的关系在语言层已固定为“复用同一 tuple 值语义”。优化不得改变 _1_2 … 的位置字段语义。

ADT constructor bridge 可以复用 tuple representation,但必须保留 constructor identity。Ctor(a, b) <-> (:ctor, a, b) 是 compiler intrinsic contract,不表示用户可以靠普通 tuple 字段或 tag 字符串绕过 ADT 类型检查。