类型族

编辑
本词条由“匿名用户” 建档。
在计算机科学中,类型族将数据类型与其他数据类型联系起来,使用由输入类型的有效实例和相应的输出类型的开放式集合定义的类型级函数。类型族是一些类型系统的特征,允许通过模式匹配来定义类型之间的部分功能。这与数据类型构造器和类型同义词形成对比,前者定义了从所有特定类型到新的类型集合的注入函数,后者则使用单一实例定义了从所有特定类型到另一个现有类型集合的函数。类型族和类型类密切相关:正常的类型类通过对输...

什么是类型族

编辑

计算机科学中,类型族数据类型与其他数据类型联系起来,使用由输入类型的有效实例和相应的输出类型的开放式集合定义的类型级函数。类型族是一些类型系统特征,允许通过模式匹配来定义类型之间的部分功能。这与数据类型构造器和类型同义词形成对比,前者定义了从所有特定类型到新的类型集合的注入函数,后者则使用单一实例定义了从所有特定类型到另一个现有类型集合的函数。类型族和类型类密切相关:正常的类型类通过对输入类型的模式匹配,定义了从类型到命名值集合的部分函数,而类型族通过对输入类型的模式匹配,定义了从类型到类型的部分函数。事实上,在类型族的许多使用中,有一个单一的类型类,它在逻辑上包含与每个实例相关的值和类型。在一个类型类中声明的类型族被称为关联类型。

类型同义词族是更灵活(但更难进行类型检查)的形式,允许类型函数的代码域中的类型是任何具有适当种类的类型。另一方面,数据族通过要求每个实例为函数的结果定义一个新的类型构造器来限制代码域。这确保了函数是注入式的,允许客户的上下文解构类型族并获得原始参数类型。

动机和例子

编辑

类型族在抽象模式中很有用,在这种模式中,类型的共同组织或结构被重复,但在每种情况下都有不同的具体类型。典型的用例包括描述抽象数据类型,如通用集合,或设计模式,如模型-视图-控制器。

自我优化的抽象数据类型

编辑

引入关联类型的最初动机之一是允许抽象数据类型通过其内容类型进行参数化,从而使实现抽象类型的数据结构以自我优化的方式变化。普通的代数数据类型参数只能描述对所有参数类型表现统一的数据结构。然而,关联类型可以描述具有统一接口的数据结构家族,但根据一个或多个类型参数在实现上有所不同。然后可以为这个类定义实例,这些实例在一个地方同时定义了使用的数据结构和对数据结构的操作。

类型族

为了提高效率,我们可能对布尔值的数组使用打包的位向量表示,而对整数值使用正常的数组数据结构。有序对数组的数据结构被递归地定义为每个元素类型的一对数组。有了这些定义,当客户端引用一个数组时,会使用定义的实例自动选择一个实现。

一个用于集合的类

编辑

与前面的例子相反,我们也可以使用类型族来定义一个用于集合类型的类,其中的类型函数将每个集合类型映射到其相应的元素类型。在这个例子中,使用类型同义词族而不是数据族是至关重要的,因为多个集合类型可能具有相同的元素类型。

内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/170862/

(3)
词条目录
  1. 什么是类型族
  2. 动机和例子
  3. 自我优化的抽象数据类型
  4. 一个用于集合的类

轻触这里

关闭目录

目录