본문 바로가기

책 리뷰/함수형 자바스크립트

(9)
함수형 자바스크립트 [8장] ※ 함수형 자바스크립트 라는 책을 한 장씩 리뷰해보도록 하겠습니다. 어느덧 마지막 장 입니다. Chapter 8. 비동기 이벤트와 데이터를 관리 " 함수형 프로그래머는 함수형 프로그래밍이 엄청나게 유익하다고 주장합니다. 기존 프로그램보다 한 자릿수나 더 짧은 함수형 프로그램이 생산성은 외려 한 자릿수 더 생산적이라고 하지요 " 이번 장에서는 프로그램의 실행을 그대로 좇아가지 않는 코드에서 비동기 데이터 흐름과 관련된, 실세계의 자바스크립트 난제들을 리액티브 프로그래밍을 활용해 ES6 프로미스와 함수형 프로그램을 접목시켜 콜백 코드를 우아한 표현식으로 변경하는 방법을 볼 것입니다. 8.1 골칫덩이 비동기 코드 자바스크립트 프로그램은 사용자의 필요에 따라 여러 비동기 요청을 동시에 전송해 데이터를 페이지에 ..
함수형 자바스크립트 [7장] ※ 함수형 자바스크립트 라는 책을 한 장씩 리뷰해보도록 하겠습니다. Chapter 7. 함수형 최적화 " 자그마한 효율은 그냥 잊으세요. 대략 97%의 경우 어설픈 최적화가 모든 걸 망쳐놓는 원인이 됩니다. 하지만 나머지 결정적 3%는 최적화할 기회를 절대로 놓쳐서는 안 됩니다. " 이번 장에서는 느긋한 평가, 메모화, 꼬리 호출 최적화 함수형 최적화 기법에 대해 다룰 것입니다. 함수형 프로그래밍은 개별 함수의 평가 속도를 올리기보다는 주로 함수 중복 호출을 피해 코드가 정말 필요할 때까지 평가를 지연시키는 전략을 구사합니다. 7.1 함수 실행의 내부 작동 원리 자바스크릡트에서는 함수를 호출할 때마다 함수 컨텍스트 스택에 레코드 (프레임) 가 생성됩니다. 전역 컨텍스트 프레임은 항상 스택 맨 밑에 위치합..
함수형 자바스크립트 [6장] ※ 함수형 자바스크립트 라는 책을 한 장씩 리뷰해보도록 하겠습니다. Chapter 6. 빈틈없는 코드 만들기 함수형 코드를 작성한 다음, 제대로 작동하는지 확인하기 위해선 테스트 코드를 작성해서 의도한 대로 움직이는지 알아봐야 합니다. 단위 테스트의 목적은 코드가 개발 명세를 충족하는지 확인하고 코드가 실패하는 모든 경계 조건 주변에 담장을 치는 것입니다. 이번 장에서는 대부분의 다른 패러다임에서 일부러 테스트하기 쉽게 코드를 설계하는 것과 달리, 함수형 코드는 왜 그자체로 테스트하기 좋은지 알아 볼 것입니다. 6.1 함수형 프로그래밍과 단위 테스트 테스트는 아래와 같이 세 가지로 분류합니다. 인수 테스트 : 소프트웨어 패러다임과 무관 통합 테스트 : FP 는 코드에 존재하는 여러 모듈을 합리적으로 통합..
함수형 자바스크립트 [5장] ※ 함수형 자바스크립트 라는 책을 한 장씩 리뷰해보도록 하겠습니다. Chapter 5. 복잡성을 줄이는 디자인 패턴 "널 참조는 10억 달러짜리 실수다" 프로그램 실행 중 여러 케이스 (예외, 네크워크 에러 등) 에 의해 데이터가 null, undefined 로 세팅되면서 생기는 문제를 대비하기 위해 코딩을 하다보면 코드는 점점 복잡해집니다. 이런 복잡성을 해결하기 위해 함수자 (함수 매핑이 가능한 단순 자료형을 생성하는 것) 라는 개념을 보도록 하겠습니다. 다양한 방식으로 에러를 처리하는 로직이 들어 있는 모나드 라는 자료형에 함수자를 적용합니다. (모나드 : 범주론 이란 수학분야에서 비롯된 결과물) 5.1 명령형 에러 처리의 문제점 명령형 코드는 대부분 try - catch 구문으로 예외를 처리합니다..
함수형 자바스크립트 [4장 - (2)] ※ 지난번 4장 리뷰를 이어가도록 하겠습니다. Chapter4. 재사용 가능한, 모듈적인 코드로 4.5 함수 파이프라인을 합성 함수형 프로그램의 목표는, 함수형 사상의 중추인 합성을 유도하는데 필요한 자료구조를 얻는 것입니다. 합성을 하기위해선, 반드시 함수에서 부수효과를 없애야 합니다. 4.5.1 HTML 위젯에서 합성하기 중요한 내용은 없으니 생략하겠습니다. 4.5.2 함수 합성 : 서술과 평가를 구분 함수 합성이란 한마디로 복잡한 작업을 한데 묶어 간단한 작업으로 쪼개는 과정입니다. 먼저 람다JS 의 R.compose 로 두 순수함수를 합성하는 예시를 보겠습니다. const str = `We can only see a short distance ahead but we can see plenty th..
함수형 자바스크립트 [4장 - (1)] ※ 함수형 자바스크립트 라는 책을 한 장씩 리뷰해보도록 하겠습니다. 4장은 내용이 길어서 두개의 포스팅으로 나눠서 작성하겠습니다. Chapter 4. 재사용 가능한, 모듈적인 코드로 "잘 작동하는 복잡한 시스템은 십중팔구 잘 작동했던 단순한 시스템에서 진화한 경우가 많다" 모듈성 이란, 프로그램을 더 작고 독립적인 부분으로 나눌 수 있는 정도를 뜻합니다. 모듈적 프로그램은 자신을 구성하는 부속들로부터 자신의 의미를 도출할 수 있다는 특별한 점이 있습니다. 부속 (하위 프로그램) 은 다른 시스템에 그대로 혹은 더 잘게 쪼개서 통합할 수 있는 재사용 가능 컴포넌트이며 개발자의 생산성 및 유지보수, 가독성을 향상시키는데 큰 도움이 됩니다. 4.1 메서드 체인 대 함수 파이프 라인 3장에서 본 메서드 체인과 별..
함수형 자바스크립트 [3장] ※ 함수형 자바스크립트 라는 책을 한 장씩 리뷰해보도록 하겠습니다. Chapter 3. 자료구조는 적게, 일은 더 많이 "계산 프로세스는 컴퓨터에 내재하는 추상적인 존재다. 이들이 점점 진화하면서 프로세스는 데이터라는 또 다른 추상적인 존재에 영향을 끼친다." 3장에서는, 이전 장에서 함수를 순수하게 만드는 법에 대해 알아보았으니 이것들을 서로 연결하는 방법을 알아보겠습니다. 자료구조를 순차적으로 탐색/변환하는 데 쓰이는 실용적인 연산들 (map, reduce, filter 등등) 과 로대시JS 에 대해 볼 것입니다. 이런 도구들을 통해 메인 로직에서 제어 흐름을 명확하게 분리하여 간결하고 확장성 좋은 선언적 프로그램을 작성할 수 있습니다. 3.1 어플리케이션의 제어 흐름 프로그램이 정답에 이르기까지 거..
함수형 자바스크립트 [2장] ※ 함수형 자바스크립트 라는 책을 한 장씩 리뷰해보도록 하겠습니다. Chapter 2. 고계 자바스크립트 " 자연어는 지배적인 패러다임이 없습니다. 자바스크립트도 마찬가지입니다. 개발자들은 절차적, 함수형, 객체지향형 접근 방법이 들어 있는 손가방에서 적절히 골라 섞어 쓰면 됩니다." 이번 장에서는 자바스크립트가 함수형 언어로서 손색이 없는 이유 및 미흡한 점과 함께 고계함수, 클로저까지 보도록 하겠습니다. 2.1 왜 자바스크립트인가? 자바스크립트의 장점은 편재성 (어디에나 있음) 입니다. 동적 형식이고 객체지향적 범용 언어이자 가장 널리 쓰이기 때문입니다. 자바스크립트 구문은 C 언어와 비슷하지만 리스프(Lisp), 스킴(Scheme) 같은 함수형 언어의 영향을 많이 받았습니다. 리스프, 스킴의 공통점..