자바스크립트에서 Currying을 사용하여 함수의 파라미터를 어떻게 정렬할 수 있나요?

Currying을 사용하여 함수의 파라미터를 정렬하는 간단한 예제를 살펴보겠습니다.

우선, Currying을 구현하는 함수를 정의합니다.

function curry(fn) {
  return function curried(...args) {
    if (args.length >= fn.length) {
      return fn.call(this, ...args);
    } else {
      return function (...nextArgs) {
        return curried.call(this, ...args, ...nextArgs);
      };
    }
  };
}

그런 다음, 정렬 함수를 예로 들어보겠습니다.

function sortNumbers(a, b) {
  return a - b;
}

const curriedSort = curry(sortNumbers);

const sortAsc = curriedSort();
const sortDesc = curriedSort().bind(null, -1);

const numbers = [3, 1, 2, 5, 4];

console.log(numbers.sort(sortAsc));  // [1, 2, 3, 4, 5]
console.log(numbers.sort(sortDesc)); // [5, 4, 3, 2, 1]

위의 코드에서 curry 함수를 사용하여 sortNumbers 함수를 curried 함수로 변환했습니다. 그런 다음 curriedSort 함수를 정의하여 정렬 함수를 currying으로 호출할 수 있도록 했습니다.

curriedSort를 호출할 때 인자를 전달하지 않으면 오름차순으로 정렬되고, -1을 인자로 전달하여 sortDesc 변수를 통해 내림차순으로 정렬할 수 있습니다. 그리고 numbers 배열에 sort 메소드를 호출하여 정렬된 결과를 확인합니다.

이렇게 Currying을 사용하여 함수의 파라미터를 정렬할 수 있습니다. Currying은 함수를 더 유연하고 다양한 상황에 대응할 수 있도록 도와주는 기술입니다.