代數數據類型(英語:Algebraic data type,縮寫:ADT)是一種複合類型,指由其他資料類型組合而成的類型,在電腦編程中,尤其是函數式編程類型論中應用。

兩類常見的代數類型是積類型英語Product type(即元組和記錄)與和類型(即標籤聯合) 。[1]

一個積類型的值通常包含多個值,即字段。該類型的所有值都有相同的字段類型組合。一個積類型的所有可能值的集合是其字段類型的所有可能值的集合的集合論乘積,即笛卡爾積

一個和類型的值通常被分組為多個類別,即變體。一個變體類型的值通常是用一個叫做構造器的准功能實體創建的。每個變體都有自己的構造函數,它接受指定數量的參數,並具有指定的類型。和類型的所有可能值的集合是其變體的所有可能值的集合的集合論之和,即不相連的聯合。枚舉類型是和類型的一個特例,其中構造函數不需要參數,因為每個構造函數隻定義一個值。

代數類型的值是用模式匹配來分析的,它通過構造函數或字段名來識別一個值,並提取它所包含的數據。

代數數據類型被引入到Hope中。Hope是一個20世紀70年代在愛丁堡大學開發的小型函數式程式語言[2]

支持代數數據類型的程式語言

許多程式語言將代數數據類型作為一等類型概念,包括:

參考文獻

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.