Skip to content
On this page

Partial Application

Partial Application

Partial Application (Partial Function Application)은 여러개의 파라미터를 받는 함수가 있을 때 일부 파라미터를 고정한 함수를 만드는 것을 뜻한다.

const add = (a, b, c) => a + b + c;
add(1, 2, 3); // 6

이를 Currying하면 다음과 같다.

const add = a => b => c => a + b + c;
add(1)(2)(3); // 6

이를 Partial Application을 하면 다음과 같다.

const add = a => (b, c) => a + b + c;
add(1)(2, 3); // 6

여기까지만 하면 기존 Currying과는 파라미터 갯수 외에는 차이가 없어보인다.
파라미터 고정을 해보자.

const log = (date, info, message) => console.log(`${date} ${info} ${message}`);
const logNow = (info, message) => log(new Date(), info, message);
logNow('INFO', 'Hello World!'); // 2019-01-01T00:00:00.000Z INFO Hello World!

물론 이를 Currying 하여 파라미터 고정을 할 수도 있다.

const log = (date, info, message) => console.log(`${date} ${info} ${message}`);
const logNow = info => message => log(new Date(), info, message);
const infoLogNow = message => logNow('INFO')(message);
infoLogNow('Hello World!'); // 2019-01-01T00:00:00.000Z INFO Hello World

Currying과의 공통점

함수의 파라미터가 2개 이상일 때 Currying과 Partial Application 함수가 받는 파라미터는 기존 함수 파라미터보다 더 적다.

Currying과의 차이점

Currying은 파라미터를 단 한개만 받을 수 있고, Partial Application 함수는 1개 이상의 파라미터를 받을 수 있다.