# 何为ADTs？

首先解释ADTs本身：

1. abstract data types 抽象数据类型（非本问题重点）
2. algebraic data types 代数数据类型（不用详细描述）

哪些是ADTs：

1. product types: case class（Product、Tuple）、HList
2. coproduct types: Either、sealed trait
3. union types: scala3 A | B
4. intersection types: scala3 A & B
5. sum types: enum

答到2并知道Product特质，及格

答完满分
