加载中...

代数数据类型(Algebraic Data Type,ADT)指通过「积」与「和」两种代数运算组合出的类型:积类型(product type)把多个值捆绑在一起,如元组、记录;和类型(sum type,又称标签联合)表示「若干种情形之一」,如 Haskell 的 data、Rust 的 enum。
典型例子是 Option/Maybe 类型:它要么是携带值的 Some/Just,要么是空的 None/Nothing。列表、二叉树等递归结构也可用 ADT 自然定义。
ADT 通常与模式匹配联用,编译器可做穷尽性检查:漏掉某个情形会直接报错,这使「非法状态不可表示」的建模风格成为可能。
ML、Haskell、Rust、Swift、Kotlin(sealed class)、TypeScript(可辨识联合)等语言都提供了 ADT 或等价机制,它已成为现代静态类型语言的标准配置。

登录 后参与讨论
暂无讨论,来发表第一条评论吧