Norm 0.5
Norm 0.5 完成封闭数据、名义行为抽象与上下文类型推断的统一实现。本页定义 0.5 的实现契约;具体语法与类型规则由语言规范定义。
数据与控制流
- 泛型数据 enum 的 variant 可以携带不同字段;
- pattern 支持 variant、类型化绑定、字面量、
null、通配符和递归解构; - 所有
switch都在编译期检查穷尽性,按源码顺序匹配且不 fallthrough; switch表达式沿用break value,被匹配值只求值一次;std.core.Result<T, E>与Unit由普通 Norm 源码定义。
接口与协议
- interface 是唯一的名义行为抽象,支持泛型参数、多父接口和泛型 bound;
- class 通过显式
implements建立关系,接口调用按具体类型动态分派; - Core IR 保存 interface requirement、conformance 与 witness,验证器在执行前校验完整闭包;
Iterable<T>、Iterator<T>、Sized、Comparable<T>、Equatable<T>、Hashable与Stringable是标准库普通 interface;- 内建集合通过
Iterable<T>驱动遍历,内建标量通过Stringable参与批量输出。
类型推断与基础类型
- 类型推断统一使用 expected type、表达式类型与泛型约束求解;
- 构造表达式支持 diamond,嵌套构造可从参数位置继续传播 expected type;
- 数组与列表字面量使用上下文和元素共同推断,异构数值可汇合到
Number; - 数字字面量在无上下文时选择
Integer、Long或Double,有上下文时服从合法的具体数字目标类型; - 遍历式
for支持value,index双绑定,索引位于第二个位置; printLines与expectedOutputLines提供类型安全的批量输出和测试断言。
工具链
- Binder、Core IR、验证器与 Truffle 后端共享确定的 enum、pattern、interface 和 witness 表示;
- Language Server 使用同一语义模型提供新语法的诊断、补全、悬停与导航;
- VS Code 扩展识别新关键字、泛型上下文和当前编译器分发;
- 标准库、项目级跨 package 接口和算法测试共同覆盖编译与真实执行。
完整规则见语言规范、数据模型、Enum 与 Switch和Null 与类型推断。