On this page
Partial Application
On this page
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개 이상의 파라미터를 받을 수 있다.