JavaScript의 카레 함수

이것은 JavaScript의 커링 함수에 대한 일련의 기사입니다. 소개 게시물(이 게시물)과 JavaScript를 사용한 기본 및 고급 커링을 탐구하는 여러 후속 게시물로 구성됩니다.

다음 게시물인 에서 기본 카레 함수의 예를 볼 수 있습니다. 후속 게시물에서는 기존 함수를 커링하는 고급 기술을 점진적으로 다룰 것입니다.

그 전에 먼저 몇 가지 기본 용어를 살펴보겠습니다.

아리티



함수의 개수는 함수가 호출 시 기대하는 인수의 수입니다.

단항 함수



단항 함수는 하나의 인수만 취하는 함수입니다. 즉, 인수 수는 1입니다. 함수가 단항일 수 있는 Haskell에서는 매우 일반적입니다.

카레 함수



커리 함수의 가장 간단한 형태는 다른 단항 함수를 반환하는 단항 함수입니다. 반환된 함수는 다른 단항 함수를 반환할 수도 있습니다. 중첩된 단항 함수 반환은 다중 인수 함수의 결과를 얻기 위해 순서대로 계속됩니다. 이렇게 하면 한 번에 하나의 인수로 함수를 순차적으로 호출할 수 있습니다.

// Regular multi-argument function
const createMessage = (greeting, name, message) => {
  return `${greeting}, ${name}! ${message}`);
};

// A curried function helping achieve the same thing
const createMessage = greeting => name => message => `${greeting}, ${name}! ${message}`);

// So now we can do this:
createMessage('Hello')('World')('Whadup?');


Haskell에서 이것은 여러 인수를 효과적으로 받아들이지만 한 번에 하나씩 함수를 전달하는 데 사용되는 기술입니다. "카레"라는 단어는 Haskell Curry에서 유래되었습니다.

고차 함수



Curried 함수는 Higher Order Functions 또는 HOF이기도 합니다. 이는 항상 다른 함수를 반환하고 일반적으로 curried 함수를 사용하기 때문입니다.

Variadic Curried 함수



가변 커리 함수는 호출당 다양한 수의 인수를 사용할 수 있는 보다 정교한 커리 함수입니다. 반환된 각 함수는 단일 인수 또는 둘 이상의 인수를 사용할 수 있습니다. 기본적으로 다음과 같이 할 수도 있습니다.

createMessage('Hello', 'World')('Whadup?');
// or
createMessage('Hello')('World', 'Whadup?');

좋은 웹페이지 즐겨찾기