内建函数
本文档收敛 Dujie 第一阶段对外可见的全局内建函数与构造形式。
渲染相关内建 main / element / text / fragment / comment 单独见 渲染内建。
总体原则
- 这里只列语言已经公开承诺的全局内建
- 类型转换形式如
int(x)、float(x)视为语言内建转换,不归入普通全局函数表面 none、some(...)是opt<T>的语言构造,不归入普通全局函数表面
输出函数
第一阶段稳定支持以下输出函数:
print(value: any) -> unitprintln(value: any) -> uniteprint(value: any) -> uniteprintln(value: any) -> unit
说明:
- 这些函数主要用于调试和简单展示
- 它们接受
any - 对复杂类型的具体展示文本不作为核心语言语义的一部分锁死
panic
形式:
panic(message: string)
规则:
- 参数只接受
string - 调用后不会正常返回
- 在类型检查上,允许出现在任意需要值的位置
assert
assert 作为第一阶段内建调试能力保留。
当前用户可按以下签名理解:
assert(condition: bool) -> unitassert(condition: bool, message: opt<string>) -> unit
规则:
- 第一个参数必须是
bool - 第二个参数如果提供,用于附加错误信息
- 该能力主要用于开发期诊断
iter(...)
iter 同时是内建参数化类型名和内建构造形式。
当前稳定承诺的构造形式是:
iter(xs: list<T>) -> iter<T>
它的职责是把稳定容器转换成遍历管道的起点。
例如:
let xs: list<int> = [1, 2, 3];
let out = iter(xs).map(func(x: int) -> string {
`#${x}`
}).collect();
第一阶段不在这里展开更多来源类型。
当前不归入全局内建函数的形式
以下能力虽然是语言内建,但不按普通全局函数对待:
text(...)fragment(...)comment(...)element(...)mainint(x)/float(x)some(x)/none
它们分别属于:
- 渲染内建
- 显式类型转换
opt<T>构造