Skip to content

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 与类型推断。

Norm 0.25