代數數據類型(英語: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.