[fn_in_js] 함수형 프로그래밍

Inhye Jeong·2020년 11월 17일
0

1. currying

  • 다인자 함수를 단인자 함수로 변경해주는 것
  • Partial Application의 일종
(x, y, x) => x, y, z
(x) => (y) => (z)

2. HOF (higher order function)

  • 함수를 인자로 받는 함수

    c, cpp, java는 함수를 값으로 받지 않아서 다른 방법을 사용해야한다. LISP 계열의 언어들은 가능하다.

// 변수도 함수라고 볼 수도 있다.
const x = 0
const f = x => x + 1

3. Functor와 추상화

  • 함수, 클래스 등으로 추상화

    OOP에서는 Animal, Mobility와 같이 추상화한다면, fp는 Move 등으로 .. 추상화가 된다. 특히 수학적으로 접근한다.

  • for loop의 추상화(Array), Promise, HashMap, Tree, If의 추상화(Maybe, Option)

    여러개의 객체를 가짐, 연산이 나중에 일어난다. -> 이 둘의 Parent는? fp의 접근에서는 추상 클래스는 Functor로 본다.

  • Functor

    Functor는 Map으로 구현되어야한다.

map :: (a -> b) -> fa -> fb
  • Array.map
map :: (a -> b) -> Array<a> -> Array<b>
  • Promise
(a -> b) -> Promise<a> -> Promise<b>

4. Functor

  • 구조를 보존하는 연산

    결합 법칙처럼 구조가 변해도 결과가 보존되어야한다.

profile
Frontend Engineer in @KakaoStyle

0개의 댓글