豫言 / 技术规范

此篇据 4cdeca1 之实现。所据及适用之界,见基线之篇。

标签函类

此为今编译器于独立实现基线之上所增之语言则。标属函类,依参位校之,检查毕乃去。与汉语稿相应。

签一:语法

「差」乃化「被减数」为「整数」而化「减数」为「整数」而「整数」也。
「差」者会「被减数」为「甲」而会「减数」为「乙」而「减」于「甲」于「乙」也。
「差」于「被减数」为「一零」于「减数」为「三」。

签书于全符:化〇为〇而〇、化〇为〇者□而〇、遇〇为〇者□而〇、会〇为□而〇、〇于〇为〇。会之签右须局部名;遇仍以者绑定其体。独立签项及签项外括不可析。

标签须非空名;数字、注释、编译器内名不可为标。标之文独立于名境,局部名可同标。诸标可重,各位之参型可异。

查规约关系表前,五签符各归 化〇而〇、化〇者□而〇、遇〇者□而〇、会□而〇、〇于〇,从其原关系。调用仍左结合。域可径书类应用,如 化「表」为「列」于「整数」而「整数」;调用之复合实参须括,如 于「值」为(「加」于「一」于「二」)。

签二:类型规则

普通箭头记 A→B,标签箭头记 ~签:A→B。

则 普通箭头 标签箭头
形成 A、B 皆类 A、B 皆类且标合法
引入 以 A 予局部名,按 B 验体 以 A 予局部名,按 B 验体;定义之标须为签
消去 按 A 验参 实参之标须为签,按 A 验其值
相等 域、果逐项等 标之文、域、果逐项等

遇验参型而合体之类,依参有标与否成其箭头。标守原文,局部绑定仍可共换其名。

两箭各成一类。全标签函类可为别名、参数、结果、组项、容器之物或泛型类参。变量、条件选择、调用所返之函,皆依全类验之。

合一并比标与子型。待求类名可解为全标签函类;独立标签项为参之描述,不可为其解。普通回调之位须普通函,可用普通匿名函调标签函而转接。

签三:应用与模式

第 n 实参配第 n 形参,逐位验标与实型。有标位须同标,无标位径授其值。标虽重,位之序如故。

参之组、满应用、字面右箭展平、返函别名另成一组、隐式承与授以皆从旧则。隐参或为类参,或为隐值参数(承 A 者「x」而 B,见依值类型);皆不设签,独立标签项不可授之。依值之箭可设签:化「签」为 A 者「x」而 B。

求隐参之预读穿标而视真实域,依类型与模块类四之四入口及一遍有序推定行之。实参之值、构造子模式、局部变量皆按去标之型验。

签四:擦除与边界

检查毕,调用与模式之标去。带型抽象之域存标,供阶段文、接口型、类等、悬停;后随型标擦除。标不入自由名,不寻名,亦不换名。

运行之授参序、求值交错、尾位、直调、整数去装箱皆从旧则。构造字段形、签名类别、宿主界形皆视真实型。无体之声明按诸参有标与否成匿名函,宿主字段名与 Wasm 参数形如故。

JSON 与豫言阶段文皆存标签项与未检之标签抽象。前者唯一子式,后者唯一绑定体;检查后之阶拒未检之标签抽象。悬停之签箭头书 (化「标」为 类型 而 结果类型)。

签五:实现范围

普通值函、匿名函、值构造器与模式、GC 与底层模式、无体接口签名皆行此则。首版之类型构造器参数、着色语言遇标则明报其限。默认值、可变参、乱序调、偏应用、标之简写、自转接,皆守既有边界。

今编译器已去 循□以〇。顶层递归以紧邻之全签与定义成之;局部递归书递归虑。仓中旧循之用例,已改依签递归。