개요
kotlin의 sealed class를 학습하던 중 대수적 데이터 타입을 표현하기에 적합하다는 말을 보았다. 대수란 무엇인가 알아보고 대수적 데이터 타입에 대해 알아보자
대수란
대수적타입: 다른 자료형의 값을 가지는 자료형
'합'과 '곱'이라는 용어는 대수의 연산에서 영감을 받은 것,
합이란 가능한 타입들의 합 "Either<A,B>는 A타입 또는 B타입의 값을 가질 수 있다."
곱이란 가능한 값의 조합은 각 성분의 곱 "(A,B)의 튜플 타입은 A의 가능한 모든 값과 B의 가능한 모든 값의 조합을 표현"
대수적 데이터 타입에는 곱타입(product type)과 합타입(sum type)이 존재
class 곱타입 예시, And로 표시 가능
data class Person(val name: String, val age: Int, val address: String)
sealed class Shape {
data class Circle(val radius: Double) : Shape()
data class Rectangle(val width: Double, val height: Double) : Shape()
}