Published on2026년 2월 16일모나드(Monad)란 무엇인가 — Functor, Applicative, Monad를 JS로 이해하기javascriptfunctional-programmingmonadfunctorapplicativecategory-theory모나드는 함수형 프로그래밍에서 효과를 포함한 계산을 합성하기 위한 규약이다. 위키피디아 정의를 바탕으로 Functor→Applicative→Monad 계층과 모나드 법칙을 정리하고, JavaScript에서 Array/Promise/Maybe/Either로 어떤 의미를 가지는지 이론적으로 설명한다.
Published on2026년 2월 15일go, pipe, reduce에서 비동기 제어 — Promise를 값으로 다루는 함수 합성javascriptfunctional-programmingpromiseasyncreducegopipego, pipe는 reduce로 구현되어 있다. reduce 하나만 고치면 비동기 상황에서도 함수 합성이 안전하게 동작한다. 유명 함수와 재귀로 동기 구간의 성능을 지키면서, Promise.reject까지 안전하게 처리하는 방법을 알아보자.
Published on2026년 2월 15일비동기를 값으로 만드는 Promise — 모나드와 Kleisli Compositionjavascriptfunctional-programmingpromiseasynckleisli-compositionmonadcallback은 결과를 값으로 돌려주지 못한다. Promise는 비동기를 일급 값으로 만들어 합성을 가능하게 한다. 모나드 관점에서 Promise의 안전한 합성을 이해하고, Kleisli Composition으로 외부 상태 변화까지 다뤄보자.
Published on2026년 2월 14일flat 함수를 이터러블로 구현해보자. L.flatten과 L.deepFlat 🪆javascriptfunctional-programminglazy-evaluationiterableflatten중첩 배열을 펼치는 flat 함수를 이터러블로 구현해보자. 그리고 깊은 중첩까지 재귀적으로 펼치는 L.deepFlat을 구현해보자. 그리고 yield * 위임 문법을 알아보자.
Published on2026년 2월 9일게으른 함수로 부지런한 함수 만들기 🐢javascriptfunctional-programminglazy-evaluationiterablecomposition지연 평가 함수들이 단순한 성능 최적화 용도로만 생각하지 말자. 지연평가 함수는 즉시 평가 함수를 만드는 재료가 될 수 있다. L.entries, join, takeAll을 구현하고, L.map과 L.filter로 map과 filter를 재구성해보자.