함수형 프로그래밍을 위한 대체로 충분한 가이드
함수형 프로그래밍 실무 가이드에 오신 것을 환영합니다! 본 서적은 자바스크립트 환경에서의 함수형 프로그래밍 핵심 원리를 설명합니다.
학습 내용
- 순수 함수(Pure Functions): 예측 가능하고 테스트 가능한 코드 작성법
- 합성(Composition): 단순한 함수들로 복잡한 프로그램 구축
- 커링(Currying): 재사용성 극대화를 위한 함수 변환 기법
- 펑터 & 모나드(Functors & Monads): 체계적인 데이터 변환 처리
- 범주론(Category Theory): 함수형 프로그래밍의 수학적 기반
시작하기
1장: 우리는 무엇을 하는가?에서 함수형 프로그래밍 여정을 시작하세요.
가이드 소개
본 서적은 일반적인 함수형 패러다임에 대한 입문서입니다. 우리는 세계에서 가장 널리 사용되는 함수형 프로그래밍 언어인 자바스크립트를 활용할 것입니다. 현업에서 주로 사용하는 명령형 프로그래밍 문화와 상반되기 때문에 이 선택이 적합하지 않다는 평가도 있을 수 있습니다.
그러나 다음과 같은 이유로 자바스크립트가 FP 학습에 최적이라고 판단합니다:
실무에서 매일 사용하는 언어 낯선 FP 언어로 사이드 프로젝트를 진행하는 대신, 실제 업무 프로그램에 학습 내용을 즉시 적용하고 연습할 수 있습니다.
전체 지식을 습득 전에도 프로그램 작성 가능 순수 함수형 언어에서는 모나드를 사용하지 않고 변수 로깅이나 DOM 노드 읽기가 불가능합니다. 여기서는 코드 정제 과정을 학습하며 점진적으로 접근할 수 있습니다. 혼합 패러다임 환경이므로 지식 공백 시 기존 관행을 활용할 수 있어 시작이 더 수월합니다.
최상급 함수형 코드 작성 가능 소규모 라이브러리 사용 시 Scala나 Haskell과 유사한 수준의 코드 작성이 가능합니다. 현재 객체지향 프로그래밍이 산업계를 지배하고 있지만, 자바스크립트에서는 다소 부자연스러운 측면이 있습니다.
this문맥 변화 방지를 위한bind남용, 클래스 부재[^1],new키워드 누락 시 발생하는 특이 동작들, 클로저를 통한 private 멤버 구현 등이 대표적 사례입니다. 많은 개발자에게 FP가 더 자연스러운 패러다임으로 인식됩니다.
타입 기반 함수형 언어가 본 서적의 스타일 구현에 최적이지만, 우리는 패러다임 학습 도구로 자바스크립트를 선택했습니다. 적용 영역은 독자의 선택에 달려 있습니다. 수학적 인터페이스의 보편성 덕분에 Swiftz, Scalaz, Haskell, PureScript 등 다른 수학 기반 환경에서도 편안하게 작업할 수 있을 것입니다.
연습 문제
각 장에는 이해도 점검을 위한 연습 문제가 포함되어 있습니다. 문제는 저장소의 exercises 디렉토리에서 확인할 수 있습니다.
지원 기능
본 서적에서 사용하는 지원 함수와 대수적 자료 구조는 support 디렉토리에서 확인 가능합니다.
[^1]: ES2015에서 자바스크립트 클래스가 추가되었지만, 이는 기존 프로토타입 기반 상속의 구문적 설탕(syntactic sugar)에 불과합니다.