kotlin, 대수적 데이터 타입이란?

이도현·2023년 8월 23일
1

Kotlin 공부

목록 보기
18/20
  1. 개요
    kotlin의 sealed class를 학습하던 중 대수적 데이터 타입을 표현하기에 적합하다는 말을 보았다. 대수란 무엇인가 알아보고 대수적 데이터 타입에 대해 알아보자

  2. 대수란

  • 변수, 숫자, 연산자 간의 관계를 연구하는 학문
  • 대수학에서 주로 다루는 수. 대수적 수라고도 한다.
  • 대수학 적인 방정식의 근이 되는 수들을 대수라고 한다.
  • 대수학적인 방정식의 근도 되지 않으면 초월수,
  • '루트 2'는 'x제곱 = 2'의 근이 되므로 대수, 허수도 대수
  • 원주율은 초월수
  1. 대수적 데이터 타입(ADT: Algebraic Data Type)
  • 대수적타입: 다른 자료형의 값을 가지는 자료형

    '합'과 '곱'이라는 용어는 대수의 연산에서 영감을 받은 것,
    합이란 가능한 타입들의 합 "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 합타입 예시, OR로 표시 가능
sealed class Shape {
    data class Circle(val radius: Double) : Shape()
    data class Rectangle(val width: Double, val height: Double) : Shape()
}
  1. Kotlin에서 ADT 사용의 장점
  • 모든 경우의 수 처리가 가능하므로, 누락된 처리가 없다.
  • 모든 경우의 수를 명확하게 볼 수 있다.
  • 함수형 프로그래밍 패러다임에서 중요한 법칙인 불변성을 지킨다.(data class, sealed class)
  • 복잡한 데이터 구조나 도메인의 규칙을 간결하게 표현할 수 있다.

reference

https://medium.com/@lazysoul/%EB%8C%80%EC%88%98%EC%A0%81-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%83%80%EC%9E%85%EC%9D%B4-algebraic-data-type-%EC%9D%B4%EB%9E%80-26d9e73d96b6

profile
좋은 지식 나누어요

0개의 댓글