프로그래밍, 특히 함수형 프로그래밍과 타입 이론에서 ADT는 여러가지 원시 타입의 조합힌 합성 타입의 일종이다. 크게 곱(Product) 타입과 합(Sum) 타입으로 나누어진다.
ADT의 값들은 패턴 매칭을 통해 분석된다.
흔히 튜플, 레코드, 구조체 타입 등으로 불리는 타입이다.
곱 타입은 각 타입이 가질수 있는 값의 개수들을 곱한 만큼의 인스턴스를 가질 수 있다.
다음의 튜플은 int 집합 * int 집합 만큼의 인스턴스를 가질 수 있다.
type intAndInt = int * int
태그드 유니언, 열거형 등으로 불리는 타입이다.
type Option<'a> =
| Some of 'a
| None