标签函类
此为今编译器于独立实现基线之上所增之语言则。标属函类,依参位校之,检查毕乃去。与汉语稿相应。
签一:语法
「差」乃化「被减数」曰「数」又化「减数」曰「数」为「数」者也。
「差」者得「被减数」曰「甲」又得「减数」曰「乙」而
「甲」减「乙」
也。
「差」于「被减数」曰「一零」于「减数」曰「三」。
签书于全符:化〇为〇而〇、化〇为〇者□而〇、遇〇为〇者□而〇、会〇为□而〇、〇于〇为〇。会之签右须局部名;遇仍以者绑定其体。独立签项及签项外括不可析。
标签须非空名;数字、注释、编译器内名不可为标。标之文独立于名境,局部名可同标。诸标可重,各位之参型可异。
查规约关系表前,五签符各归 化〇而〇、化〇者□而〇、遇〇者□而〇、会□而〇、〇于〇,从其原关系。调用仍左结合。域可径书类应用,如 化「表」为「列」于「数」而「数」;调用之复合实参须括,如 于「值」曰(「加」于「一」于「二」)。
签二:类型规则
普通箭头记 A→B,标签箭头记 ~签:A→B。
| 则 | 普通箭头 | 标签箭头 |
|---|---|---|
| 形成 | A、B 皆类 | A、B 皆类且标合法 |
| 引入 | 以 A 予局部名,按 B 验体 | 以 A 予局部名,按 B 验体;定义之标须为签 |
| 消去 | 按 A 验参 | 实参之标须为签,按 A 验其值 |
| 相等 | 域、果逐项等 | 标之文、域、果逐项等 |
遇验参型而合体之类,依参有标与否成其箭头。标守原文,局部绑定仍可共换其名。
两箭各成一类。全标签函类可为别名、参数、结果、组项、容器之物或泛型类参。变量、条件选择、调用所返之函,皆依全类验之。
合一并比标与子型。待求类名可解为全标签函类;独立标签项为参之描述,不可为其解。普通回调之位须普通函,可用普通匿名函调标签函而转接。
签三:应用与模式
第 n 实参配第 n 形参,逐位验标与实型。有标位须同标,无标位径授其值。标虽重,位之序如故。
参之组、满应用、字面右箭展平、返函别名另成一组、隐式凡与以皆从旧则。隐参或为类参,或为隐值参数(凡「x」属 A 而 B,见依值类型);皆不设签,独立标签项不可授之。依值之箭可设签:化「签」为 A 者「x」而 B。
求隐参之预读穿标而视真实域,依类型与模块类四之五入口及一遍有序推定行之。实参之值、构造子模式、局部变量皆按去标之型验。
签四:擦除与边界
检查毕,调用与模式之标去。带型抽象之域存标,供阶段文、接口型、类等、悬停;后随型标擦除。标不入自由名,不寻名,亦不换名。
运行之授参序、求值交错、尾位、直调、整数去装箱皆从旧则。构造字段形、签名类别、宿主界形皆视真实型。无体之声明按诸参有标与否成匿名函,宿主字段名与 Wasm 参数形如故。
JSON 与豫言阶段文皆存标签项与未检之标签抽象。前者唯一子式,后者唯一绑定体;检查后之阶拒未检之标签抽象。悬停之签箭头书 (化「标」为 类型 而 结果类型)。
签五:实现范围
普通值函、匿名函、值构造器与模式、GC 与底层模式、无体接口签名皆行此则。首版之类型构造器参数、着色语言遇标则明报其限。顶层函之签参可设为可省之参,见签六;可变参、乱序调、偏应用、标之简写、自转接,皆守既有边界。
今编译器已去 循□以〇。顶层递归以紧邻之全签与定义成之;局部递归书复令。仓中旧循之用例,已改依签递归。
签六:可省之参
顶层函之签参可设为可省之参(提案〇〇〇一九):签名书 可化「签」为 类 而,定义于同位书 得「签」曰「局部名」阙则 值 而,调时可不授。
「框」乃
化「宽」曰「数」可阙
又化「高」曰「数」可阙
又化「名」曰「文」
为「文」者也。
「框」者得「宽」曰「宽值」阙则「二六」又得「高」曰「高值」阙则「一六」又得「名」曰「名值」而
「名值」接『:』接(「述数」于「宽值」)接『×』接(「述数」于「高值」)
也。
「书」于(「框」于「名」曰『甲』)。
「书」于(「框」于「高」曰「三六」于「名」曰『乙』)。
二调依次印 甲:26×16 与 乙:26×36。
其则:
- 书法。 签名之参位书
可化〇为〇而〇,可省之参必带签,书可化 类 而则报误。定义之参处书会〇为□默认〇而〇。签名为可化之参,定义必书默认值;签名为化之参,定义书默认值则报误。二书之规约关系各依化〇而〇、会□而〇查表。 - 默认值。 默认值为数据:字面、构造器施于数据、顶层数据之名,同提案〇〇〇〇六顶层数据之则,依签名之参类验之。默认值含他算,则报“可省参数的默认值只能是数据”。
- 配与补。 调仍书
于「签」为 值,实参依签名之次书之。类型检查循签名首组显参逐一配之:可省之参,次实参之签同则用之,否则补其默认值;必填之参缺、签书误、次与签名不合,各报其误。补齐之调即参齐之常带签之调,签仍擦之,运行无增费。隐参仍以以授之或推定之。 - 唯可当场调。 带可省之参之函,所见之处必为调之首(
「函」于 …、「函」以 … 于 …);为值而传、存于组值、为返值,皆报“「函」带可省参数,只能当场调用;要当值用,请包一层 λ”。故函值之类惟有常带签之箭。函体中自递归之调亦可省可省之参。一句唯函名而其参又全可阙者,此名即据整句之调首,是为全省之调(议二〇一):类型检查补之为参齐之调,默认之值依常而补。此名见于他式(为实参、存组值、为返值、书于令之定义处)者,仍依值用报误;为函起别名之具名之定(「甲」者「函」也。)亦然。 - 跨模。 默认值随模之检查后定义而出,他模调之亦补齐;默认值易,则调者随所依而重编。
- 所行之文。 常源文、试、脚本与
。底层。豫皆可用之。。接口。豫、。应用接口。豫、。底层接口。豫、。内建。豫诸无体之声与构造器暂不用可化,书之则报误。 - 转授。 裹函欲以可省之参转授内函,则自亦声为可省之参而书默认值。
实现:可省之参之签于类中带内缀,与必填之签不相等;签名与定义归并之时,每默认值拆为列于函前之隐顶层定义「《《默认:函:签》》」,其类取此参之类;调处所省之实参补为其引。顶层匿名之语(脚本与壳中之一句)唯书全可阙之函名者,类型检查补整句为无实之调,乃依常而补默认之值;具名之定与他为值用者仍报误。悬停示可省之参为 可化「签」为 类 而。格式化器排含 可化 之签名,每参独一行。
后续版本之事:默认值引前参或类参;可省之参之类引类参(议五一〇,提案〇〇〇五〇所赖);接口之文之可省之参;调处明取默认值之书法。
签七:构造之书
「首」【项,…】 之首为「列」「典」「组值」「组类」与「《《扩展名》》」以外之名者,为构造之书(提案〇〇〇一八议十九)。语法分析器仍旧;阐述记之为构造之节(首并项列),名称解析依常名求其首,类型检查依构造调用之约降为带签之调,其后常编之。
「框」乃
化「宽」曰「数」可阙而
化「名」曰「文」而
化「子项」曰(「列」于「文」)而
「文」
也。
「框」【「名」者『甲』也,『子一』,『子二』】
此处同于 「框」于「宽」曰「二六」于「名」曰『甲』于「子项」曰(「列」【『子一』,『子二』】)(「宽」取默认值二十六)。
构造调用之约:
- 首。 首为首组显参皆带签之函;有无签之参,则报“「首」不接受构造写法”。首不得,则报“未定义的构造「首」”。
- 有名之项。
「名」者 值 也对带签之参于「名」为 值,次可任书,降级时依签名排之。签名无此签,则报“构造「首」没有属性「名」”,并列可用之属性。 - 可省与必填。 签名为
可化之参可不书,取定义默认所予之值(签六);余参必填,缺则报“构造「首」缺少必填属性「名」”。 - 子项。 串项与余项依次入签为「子项」之参(其类须为
(「列」于 甲)),无子项则为空列;首无「子项」之参而书子项,则报“「首」不接受子项”。甲为「文」则串项径入;甲为和类而恰有一唯收串之构造器,则串项以此构造器裹之;余皆报误。 - 信号之升。 参类为
「信号」于 甲,有名之项之值所合者为信号以外之类,则以「信号」类中名「常量信号」之构造器裹之(唯构造之书)。 - 小数字面。 参类(或信号之元素类)为「小数」,则整数之字面作小数之字面。
- 表达式码。 参类为
「式码」于 甲(设计之库)、值为顶层之函名者,以「造表达式码」裹之,并附编译器译此函(及其所呼之函)所得之受限中间表示之文。降级时先书占位之文,全文检毕乃译之。表达式层唯收整数、小数、爻与元组之算、比、若、虑与顶层之函之呼,呼图须无环。 - 当场调。 构造之书即当场之调,合签六第四则。「列」「典」「组值」「组类」留为内建之书,同名之函唯可以常调书之。
实现:阐述(内建操作符对象定义。豫 之「阐述通序列」)于余首返通用序列之节,有名之项记为命名项之节;类型检查合、检二入口遇之,则呼 构造写法降级。豫 之「降构造写法」,生带签之调而常检之。
后续版本之事:串项之裹今唯识串之字面,类为「文」之变量与式于后续版本裹之;构造之节之悬停与语义标记。