CAT:一种静态类型的连接语言

2020-09-21 02:51:43

CAT有三个不同级别的规范:0级、1级和2级。这是为了让工具能够识别它们符合规范的程度。规范的每个级别都指定了许多原语函数。这些函数可以是内置的,也可以在隐式链接的标准库中定义。

核心Cat语言称为0级Cat。核心Cat语言是一种纯函数式语言。

猫的名字(也就是。标识符)类似于Scheme语言。它们由字母、数字和符号字符(~`!@#$%^&;*-+=|:;<;>;)组成。?/)。但是,仅兼容0级的Cat实现可能会将名称限制为由小写字母数字英文字母、数字0..9和下划线(总共37个字符)组成的名称。这将减轻存储空间特别宝贵的字母编码的负担。CAT通常区分大小写,但我们可以预期0级兼容版本将不区分大小写。

以下字符也是有效的名称:(),和括号对一样,不包含任何内容()。注:()是两个名字,而()是一个名字。一个限制是名称不能以数字开头。有效名称的示例包括:

新函数在Cat中使用DEFINE关键字定义。函数具有简单函数声明的形式示例:

CAT具有强大的静态类型系统。有效的Cat程序中的每个表达式都有一个定义良好的类型,可以使用可判定算法通过静态代码分析来确定该类型。CAT还允许动态类型检查。

Cat类型系统由简单类型(不带限定符的一阶类型)和行变量组成,其中包含丰富的类型方案(具有最外层通用限定符的简单类型)。Cat表达式的类型推断可以使用基于Hindley-Milner类型重构算法的统一算法,该算法由DAMAS扩展以支持多态性。

Cat类型可以是简单的内置类型、函数类型、类型变量或类型矢量变量。

函数类型声明(也称为类型批注、类型签名和堆栈效果图)是可选的。所有有效的Cat函数和表达式都可以具有推断(即重新构造)的类型。类型声明作为文档或自动化测试工具的一种形式很有用。如果声明的类型与推断的类型不同,则Cat程序无效。已知问题类型检查目前在测试版实现中被禁用,但类型推断目前可以工作。