代数数据类型(英语:Algebraic data type,缩写:ADT)是一种复合类型,指由其他资料类型组合而成的类型,在电脑编程中,尤其是函数式编程和类型论中应用。
此条目可参照英语维基百科相应条目来扩充。 (2023年2月17日) |
此条目翻译自其他语言维基百科,需要相关领域的编者协助校对翻译。 |
两类常见的代数类型是积类型(即元组和记录)与和类型(即标签联合) 。[1]
一个积类型的值通常包含多个值,即字段。该类型的所有值都有相同的字段类型组合。一个积类型的所有可能值的集合是其字段类型的所有可能值的集合的集合论乘积,即笛卡尔积。
一个和类型的值通常被分组为多个类别,即变体。一个变体类型的值通常是用一个叫做构造器的准功能实体创建的。每个变体都有自己的构造函数,它接受指定数量的参数,并具有指定的类型。和类型的所有可能值的集合是其变体的所有可能值的集合的集合论之和,即不相连的联合。枚举类型是和类型的一个特例,其中构造函数不需要参数,因为每个构造函数只定义一个值。
代数类型的值是用模式匹配来分析的,它通过构造函数或字段名来识别一个值,并提取它所包含的数据。
支持代数数据类型的编程语言
许多编程语言将代数数据类型作为一等类型概念,包括:
- Ceylon
- Clean
- Coq[3]
- C++[4]
- Elm
- Flow[5]
- F#
- F*
- Free Pascal
- Haskell[6]
- Haxe[7]
- Hope
- Idris
- Java 15[8]
- Kotlin[9]
- Limbo
- Language Of Temporal Ordering Specification (LOTOS)
- Mercury
- Miranda
- Nemerle
- Nim
- OCaml
- Opa
- OpenCog
- Perl
- PureScript
- Racket
- Reason[10]
- Rust[11]
- Scala
- Standard ML
- Swift
- Tom
- TypeScript
- Visual Prolog
参考文献
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.