归纳族
归纳族 (又叫广义代数数据类型、指标类型) 是归纳类型在依值类型论中的推广, 它允许构造子的返回类型仅仅是归纳类型对于它参数的一组实例的特化, 因此归纳族的类型中总是有参数.
例如, 考虑如下类型:
• | 类型定义为 , 有一个自然数类型参数, |
• | 构造子 , |
• | 构造子 . |
而它的消去规则只用考虑可能的构造子, 比如 对这两个构造子都不适合, 这个类型拥有如下特征:
• | 没有任何可用的构造子, 因此这是空类型. |
• | 有一个构造子可用 , 因为若存在 使得 , 那么 , 与前文矛盾. 这可以看作单位类型. |
• | 两个构造子均可用, 一共两个不同的实例. |
• | 一共三个不同的实例. |
• | 事实上, 对于任意 , 一共有 个不同的实例. |
以上类型被称为有限集合类型, 是典型的归纳族. “族” 这个名字是因为可以把 看作定义了一族类型的函数.
1定义
这个定义可以借助 类型非常简单地推广到多参数的情形.
2例子
Martin-Löf 类型论中的相等类型可以视为一种归纳族. 最简单的定义如下:
• | 类型定义 |
• | 构造子 , 但往往采用更直观的等价版本 |
此外, 异质相等也可以被定义为归纳族:
• | 类型部分 |
• | 构造子 |
3相关概念
• |
• | Ford 化解释了如何借助相等类型将一般的归纳族转化为等价的归纳类型. |
术语翻译
归纳族 • 英文 inductive family
广义代数数据类型 • 英文 generalized algebraic data type
指标类型 • 英文 indexed type