[[분류:프로그래밍 언어]] [include(틀:이론 컴퓨터 과학)] [목차] [clearfix] == 개요 == {{{+2 Algebric Data Type}}} 대수적 자료형이란 자료형에 대한 연산(algebric)을 통해 새로운 타입을 정의하는 방식, 또는 그 타입 자체를 가리킨다. [[자료형]]은 프로그래밍 언어에서 다룰 수 있는 값을 모은 것으로, [[집합]]으로 생각할 수 있다. 이 때 이 집합들의 연산을 통해 새로운 집합을 만들어 낼 수 있는데, 이런식으로 집합(타입)에 대한 연산을 이용해 새로운 집합(타입)을 만드는 것을, 프로그래밍 언어의 관점에서는 대수적 자료형이라고 한다. 예를 들어, 가장 흔히 사용되는 자료형인 {{{ Int }}} [math( = \{x | -2^{31} \le x < 2^{31} \})] 를 생각해보자. 이 집합에 대한 [[카테시안 곱]] Int * Int 를 정의하면, {{{ Int * Int }}} [math( = \{ { ... , (0,0), (0,1), (0,2), (0,3), ..., (1,0), (1, 1), (1, 2), ... } \})] 와 같이 새로운 집합을 만들 수 있다. 그리고 이게 바로 (Int * Int) [[튜플]]이다! 대수적 자료형은 이런식으로 다양한 자료형을 합성 (Composite) 하는 방법을 제공한다. 단, 상황에 따라 대수적 자료형이 더 좁은 의미로 쓰일 때도 있다. 좁은 의미로는 "(곱 연산의) 분리 합 연산" 만을 대수적 자료형으로 생각하기도 한다. == 연산 == === 합 연산 === === 곱 연산 === === 분리 합 연산 === == 예시 ==