소개
이 랩에서는 JavaScript 에서 함수 커링 (currying) 과 언커링 (uncurrying) 의 개념을 탐구합니다. 함수 커링은 여러 인수를 받는 함수를 각각 단일 인수를 받는 일련의 함수로 변환하는 기술입니다. 반면에, 함수 언커링은 각각 단일 인수를 받는 일련의 함수를 여러 인수를 받는 함수로 변환하는 과정입니다. 이 랩을 통해 JavaScript 에서 이 두 가지 기술을 구현하는 방법을 배우게 됩니다.
This tutorial is from open-source community. Access the source code
이 랩에서는 JavaScript 에서 함수 커링 (currying) 과 언커링 (uncurrying) 의 개념을 탐구합니다. 함수 커링은 여러 인수를 받는 함수를 각각 단일 인수를 받는 일련의 함수로 변환하는 기술입니다. 반면에, 함수 언커링은 각각 단일 인수를 받는 일련의 함수를 여러 인수를 받는 함수로 변환하는 과정입니다. 이 랩을 통해 JavaScript 에서 이 두 가지 기술을 구현하는 방법을 배우게 됩니다.
지정된 깊이까지 함수를 언커리하려면 uncurry 함수를 사용합니다.
const uncurry =
(fn, n = 1) =>
(...args) => {
const next = (acc) => (args) => args.reduce((x, y) => x(y), acc);
if (n > args.length) throw new RangeError("Arguments too few!");
return next(fn)(args.slice(0, n));
};
uncurry 함수를 사용하려면 언커리하려는 함수와 언커리하려는 깊이를 인수로 전달합니다. 이 함수는 전달하려는 인수로 호출할 수 있는 가변 인자 함수를 반환합니다.
깊이를 지정하지 않으면 함수는 깊이 1까지 언커리됩니다.
const add = (x) => (y) => (z) => x + y + z;
const uncurriedAdd = uncurry(add, 3);
uncurriedAdd(1, 2, 3); // 6
전달하는 인수의 수가 지정된 깊이보다 적으면 함수는 RangeError를 발생시킵니다.
축하합니다! 함수 언커리 랩을 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 실력을 향상시킬 수 있습니다.