(x, y, x) => x, y, z
(x) => (y) => (z)
c, cpp, java는 함수를 값으로 받지 않아서 다른 방법을 사용해야한다. LISP 계열의 언어들은 가능하다.
// 변수도 함수라고 볼 수도 있다.
const x = 0
const f = x => x + 1
OOP에서는 Animal, Mobility와 같이 추상화한다면, fp는 Move 등으로 .. 추상화가 된다. 특히 수학적으로 접근한다.
여러개의 객체를 가짐, 연산이 나중에 일어난다. -> 이 둘의 Parent는? fp의 접근에서는 추상 클래스는 Functor로 본다.
Functor는 Map으로 구현되어야한다.
map :: (a -> b) -> fa -> fb
map :: (a -> b) -> Array<a> -> Array<b>
(a -> b) -> Promise<a> -> Promise<b>
결합 법칙처럼 구조가 변해도 결과가 보존되어야한다.