标签函类
此为今编译器于独立实现基线之上所增之语言则。标属函类,依参位校之,检查毕乃去。与汉语稿相应。
签一:语法
「差」乃化(「被减数」为「整数」)而化(「减数」为「整数」)而「整数」也。
「差」者会(「被减数」为「甲」)而会(「减数」为「乙」)而「减」于「甲」于「乙」也。
「差」于(「被减数」为「一零」)于(「减数」为「三」)。
「标」为 式 为标签项,可居化之域、遇之参型、会之绑定参、于之实参、构造模式之实参;居他位则拒。会之右项须局部名;遇仍以者绑定其体。
标签须非空名;数字、注释、编译器内名不可为标。标之文独立于名境,局部名可同标。诸标可重,各位之参型可异。
〇为〇 从词法与语法语二之通用后备规约,显式关系表如故。惟一可析则可省括号,如 化「值」为「整数」而「整数」、会「值」为「物」而「物」。关系未定则分组,右项复杂亦可括之。会〇而〇 首项惟受标签项;普通绑定仍从 会□而〇。
签二:类型规则
普通箭头记 A→B,标签箭头记 ~签:A→B。
| 则 | 普通箭头 | 标签箭头 |
|---|---|---|
| 形成 | A、B 皆类 | A、B 皆类且标合法 |
| 引入 | 以 A 予局部名,按 B 验体 | 以 A 予局部名,按 B 验体;定义之标须为签 |
| 消去 | 按 A 验参 | 实参之标须为签,按 A 验其值 |
| 相等 | 域、果逐项等 | 标之文、域、果逐项等 |
遇验参型而合体之类,依参有标与否成其箭头。标守原文,局部绑定仍可共换其名。
两箭各成一类。全标签函类可为别名、参数、结果、组项、容器之物或泛型类参。变量、条件选择、调用所返之函,皆依全类验之。
合一并比标与子型。待求类名可解为全标签函类;独立标签项为参之描述,不可为其解。普通回调之位须普通函,可用普通匿名函调标签函而转接。
签三:应用与模式
第 n 实参配第 n 形参,逐位验标与实型。有标位须同标,无标位径授其值。标虽重,位之序如故。
参之组、满应用、字面右箭展平、返函别名另成一组、隐式承与授以皆从旧则。隐参为类,独立标签项不可授之。
求隐参之预读穿标而视真实域,依类型与模块类四之四入口及一遍有序推定行之。实参之值、构造子模式、局部变量皆按去标之型验。
签四:擦除与边界
检查毕,调用与模式之标去。带型抽象之域存标,供阶段文、接口型、类等、悬停;后随型标擦除。标不入自由名,不寻名,亦不换名。
运行之授参序、求值交错、尾位、直调、整数去装箱皆从旧则。构造字段形、签名类别、宿主界形皆视真实型。无体之声明按诸参有标与否成匿名函,宿主字段名与 Wasm 参数形如故。
JSON 与豫言阶段文皆存标签项与未检之标签抽象。前者唯一子式,后者唯一绑定体;检查后之阶拒未检之标签抽象。悬停、文档签名书 (「标」为 类型)。
签五:实现范围
普通值函、匿名函、值构造器与模式、GC 与底层模式、无体接口签名皆行此则。首版之类型构造器参数、着色语言遇标则明报其限。默认值、可变参、乱序调、偏应用、标之简写、自转接,皆守既有边界。
今编译器已去 循□以〇。顶层递归以紧邻之全签与定义成之;局部递归书递归虑。仓中旧循之用例,已改依签递归。