2016년 12월 15일 목요일

[javascript patterns][커리(Curry)] 스터디 15

부분적인 적용

함수의 호출이 실제로는 인자의 묶음을 함수에 적용하는 것임을 알 수 있다. 그러면 인자를 한 번에 다 적용하는 것이 아니라 부분부분 인자를 가져와서 함수에 적용하는 것은 어떨까? 이것은 수학 함수를 직접 계산할 때 흔히 쓰는 방법이라 한다.
예를 들어보자
funtion add(x, y) {
  return x + y;
}

add(5, 4);
여기서 부분적인 적용을 하는 개념은
function (5, y) {
  return 5 + y;
}
// 이렇게 x를 먼저 적용한 후에
function (5, 4) {
  return 5 + 4;
}
// 이렇게 나머지 인자가 부분적으로 가져와서 적용하는 것이다.
그러니까 첫번째 인자를 적용한 상태에서 다른 인자를 넣어서 함수를 수행하는 것이다.
var add = function (x, y) {
  return x + y;
}

add.apply(null, [5, 4]); // 9

var add_part = add.partialApply(null, [5]); // 첫번째 인자만 먼저 적용 (부분적용)

add_part.apply(null, [4]); // 9
이것은 사실 add(5)(4)와 같다. add(5)가 (4)로 호출할 수 있는 함수를 반환하기 때문이다. 아! partialApply는 현재 없는 메서드이다. 하지만 이제 만들어 볼 것이다.
함수의 부분적인 적용을 처리하도록 하는 과정을 커링(Curring)이라고 한다.

댓글 없음:

댓글 쓰기