Skip to content
On this page

Abstraction, Composition

본래 의미는 기존의 context로부터 대상을 분리하여 본질을 추출하는 과정이지만 소프트웨어에서는 다음과 같은 의미를 가집니다.

Decomposition

문제를 해결하는 코드는 다수의 함수나 모듈 등의 독립적인 단위로 분리한다.

Generalization

반복된 pattern들 사이에서 보이는 유사성들을 은닉하여 중복을 줄인다.

Specialization

추상화된 단위에서 차이나는 부분만 고정하여 용도별로 사용한다.

Simplization

코드의 길이를 줄인다.

위와 같은 추상화의 예시들은 다음과 같습니다.

  • Algorithm
  • Data structure
  • Module
  • Class
  • Framework

하지만...

FP에서 추상화 단위는 오직 순수함수입니다.

코드를 pure function 단위로 분리 ⇒ decomposition, simplization

커리함수와 같은 고차함수의 정의 ⇒ generalization

고차함수에 1개 이상의 함수형 인자들을 전달 ⇒ specialization