함수자

프로그래밍에서 에러 핸들링이라는 또 다른 중요한 개념을 살펴본다.

함수자(functor) 라는 새로운 개념을 살펴본다. 이 개념은 순수하게 함수형 방법으로 에러를 다룰 수 있도록 도와준다.
함수자의 아이디어를 이해한 후 두 가지의 실제 함수자(MayBe, Either) 를 구현해본다.

자세히 보기

컴포지션과 파이프라인

함수형 컴포지션(functional composition) 이란 간단히 함수형 프로그래밍에서 컴포지션이라 일컫는다.
컴포지션 아이디어의 이론과 간단한 예제를 살펴본 후 compose 함수를 작성해본다.

자세히 보기

커링과 부분 적용

커링(currying)이 어떤 의미이며 어디서 사용되는지 이해한 후 부분 적용(partial application) 이라는
또 다른 함수형 프로그래밍 개념을 살펴본다. 커링과 부분 적용 모두 함수 합성을 사용할 때 이해해야 한다.

용어 정리

단항 함수

함수 인자를 하나만 취하는 함수를 단항 함수(unary function) 라 한다.

1
const identity = x => x;
자세히 보기

클로저와 고차 함수

함수형 프로그래밍 개념을 알기 전에 자바스크립트에서 클로저를 이해해야 한다.

클로저의 이해

클로저

간단히 얘기해 클로저는 내부 함수다. 내부 함수란 간단히 다음과 같이 다른 함수 내에 있는 함수다.

1
2
3
4
5
function outer() {
function inner() {

}
}
자세히 보기

고차 함수

언어로서의 자바스크르빝는 함수를 데이터로 다룬다. 데이터 영역에서 함수를 전달할 수 있는 강력한 개념도 있다.
인자로 다른 함수를 전달받는 함수를 고차 함수라고 한다.

데이터의 이해

프로그래머로서 데이터로 동작되는 프로그램을 알아야한다. 데이터는 실행할 프로그램을 작성하는 과정에 있어 중요하다.
따라서 모든 프로그래밍 언어는 프로그래머가 작업할 데이터를 제공한다.

자세히 보기

함수형 프로그래밍

함수형 프로그래밍이란 무엇이고, 왜 중요한가?

수학에서 함수란 무엇인가? 수학에서 함수는 다음과 같이 나타낼 수 있다.

f(X) = Y

이 수식은 “X 를 인자로 하는 함수 f 가 있으며, 출력 Y 를 반환한다” 라고 할 수 있다. X 와 Y 에는 모든 수가 가능하다.
매우 간단한 정의지만 다음과 같은 중요한 점이 있다.

  • 함수는 인자를 가져야 한다.
  • 함수는 값을 반환해야 한다.
  • 함수는 외부가 아닌 자체 인자를 받아서만 동작한다.
  • 주어진 X 하나에 Y 는 오직 하나다.
자세히 보기

메모이제이션

메모이제이션(memoization)은 컴퓨터 프로그램이 동일한 계산을 반복해야 할때, 이전에 계산한 값을 메모리에 저장함으로써 동일한 계산의 반복 수행을 제거하여 프로그램 실행 속도를 빠르게 하는 기술이다. 메모이제이션은 함수형 프로그래밍 관련 이야기에서는 빠지지 않고 꼭 등장하는 사례이기도 하다.

자세히 보기

값에 대해

함수로 협업하는 가장 좋은 방법은 인자와 리턴값으로만 소통하는 것이다. 순수하게 인자와 리턴값에만 의존하면 누가 만든 함수든 어떤 라이브러리로 만든 함수든 조립할 수 있게 된다. 이때 함수에서 다루는 값으로 자바스크립트의 기본 객체를 사용하거나 아주 보편적으로 약속된 객체만 사용하면 함수들 간의 조합성이 더욱 좋아진다.

자세히 보기

Partial.js와 함수 조립

파이프라인

즉시 실행 파이프라인, _.go와 _.mr

_.go는 파이프라인의 즉시 실행 버전이다. 첫 번째 인자로 받은 값을 두 번째 인자로 받은 함수에게 넘겨주고, 두 번째 인자로 받은 함수의 결과는 세 번째 함수에게 넘겨준다. 이것을 반복하다가 마지막 함수의 결과를 리턴해 준다.

1
2
3
4
5
_.go(10, // 첫번째 인자
function (a) { return a * 10 }, // 100
function (a) { return a - 50 }, // 50
function (a) { return a + 10 } // 60
)

_.go는 Multiple Results를 지원한다. _.mr 함수를 함께 사용하면 다음 함수에게 2개 이상의 인자들을 전달할 수 있다.

자세히 보기

함수 조립하기

함수 조립하기

함수형 자바스크립트 기법을 잘 활용하면 소프트웨어의 기능을 변경하거나 추가하기가 쉽다. 작은 단위로 쪼갠 함수들을 조합하여 큰 기능을 만들면 조합된 함수 사이사이에 새로운 함수를 추가하는 식으로 쉽게 확장해 나갈 수 있다.

함수형 자바스크립트 10가지 기법

  1. 함수를 되도록 작게 만들기
  2. 다형성 높은 함수를 만들기
  3. 상태를 변경하지 않거나 정확히 다루어 부수 효과를 최소화하기
  4. 동일한 인자를 받으면 항상 동일한 결과를 리턴하는 순수 함수 만들기
  5. 복잡한 객체 하나를 인자로 사용하기보다는 되도록 일반적인 값 여러개를 인자로 사용하기
  6. 큰 로직을 고차 함수로 만들고 세부 로직을 보조 함수로 완성하기
자세히 보기
You need to set client_id and slot_id to show this AD unit. Please set it in _config.yml.