[JS] 합성 관점에서 Promise와 모나드

CheolHyeon Park·2022년 9월 14일
0

JavaScript

목록 보기
9/23

모나드가 뭘까?

모나드는 함수형 프로그래밍에서 함수 합성을 안전하게 하기 위한 어떤 타입(?) 혹은 집합같은 것이다. (컨테이너 같은것)

우선 함수형 프로그래밍은 어떤 문제를 해결하기 위해 여러 방법(함수)들을 이용하여 해결하는 프로그래밍 기법이다.

두 함수 f: C -> Bg: B -> A가 있을 때, f(g())를 통해 A(결과)를 도출하겠다는 방식이 함수형 프로그래밍이다.

위와 같이 어떤 문제를 해결하기 위해 어떤 문제를 작은 함수(문제) 들로 보고 그 문제를 해결하기 위해 합성을 하여 결과를 도출하는 것이다.

이를 위해 필연적으로 함수 합성은 안전해야 하는데, 이를 도와주는 도구가 모나드이다.

Array와 모나드

JS에서 Array는 값이 없는 상황에 대한 합성을 안전하게 위해 Array를 사용할 수 있다.

	const f = a => a + 1
    const g = a => a + 2
	[1].map(f).filter(g).forEach(console.log) // 값이 없어도 안전하게 합성되어 외부세계에 영향을 주지 않게 된다.
	console.log(f(g())) // 값이 없으면 예상치 못한 값이 외부세계에 영향을 미친다. 

Promise와 모나드

Promise는 비동기에 대한 문제를 해결하기 위한 모나드이다.
Promise는 resolve, reject, 그리고 pending이 있다. 값을 대기하고 있는 상태에서 안전하게 함수 합성을 진행하도록 돕는다.

	Promise.resolve(1).then(f).then(g).catch(console.log) // 어떤 값이 비동기적으로 들어와도 Pending 상태로 대기하게 된다.

느낀점

함수형이 지향하는 바가 무엇이고, 어떤 문제를 해결하기 위해 나오게 됬는지 생각하게 된다.

https://teamdable.github.io/techblog/Moand-and-Functional-Architecture
https://www.inflearn.com/course/functional-es6/dashboard

profile
나무아래에 앉아, 코딩하는 개발자가 되고 싶은 박철현 블로그입니다.

0개의 댓글