Currying은 무엇인가
Currying 은 1967년 Christopher Strachey 가 Haskell Brooks Curry의 이름에서 착안한 것이다. Currying은 여러 개의 인자를 가진 함수를 호출 할 경우, 파라미터의 수보다 적은 수의 파라미터를 인자로 받으면 누락된 파라미터를 인자로 받는 기법을 말한다. 즉 커링은 함수 하나가 n개의 인자를 받는 과정을 n개의 함수로 각각의 인자를 받도록 하는 것이다. 부분적으로 적용된 함수를 체인으로 계속 생성해 결과적으로 값을 처리하도록 하는 것이 그 본질이다.
출처:sujinlee.me/currying-in-functional-javascript/
[번역] 초보자를 위한 함수형 자바스크립트 Currying 가이드
원문 : A Beginner’s Guide to Currying in Functional JavaScript - M. David Green 커링 currying, 또는 partial application은 기존 자바스크립트 코딩에 익숙한 사람들에게 혼란을 주는 기술 중 하나이다. 하지만 커링을
sujinlee.me
함수를 반환하는 함수
함수의 재활용
커링은 여러 겹 겹쳐서 재활용할 수 있다. 이런 패턴이 하이어오더 컴포넌트에도 자주 등장.
커링이란 '함수의 인자를 다시 구성하여 필요한 함수를 만드는 패턴'
인자의 순서, 개수에 따라 비슷한 함수를 반복해서 작성해야 하는 부분을 커링을 이용하면 커링패턴으로 묶인 함수들을 쉽게 유지, 보수할 수 있다.
커링함수 조합
((x * 2) * 3) + 4 를 커링함수로 조합하면
const multiply = (a, b) => a * b;
const add = (a, b) => a + b;
const multiplyX = x => a => multiply(a, x);
const addX = x => a => add(x, a);
const addFour = addX(4);
const multiplyTwp = multiplyX(2);
const multiplyThree = multiplyX(3);
const formula = x => addFour(multiplyThree(multiplyTwo(x)));
위처럼 조합하면 함수가 실행되는 순서가 오른쪽에서 왼쪽 방향(<--)이므로 가독성이 떨어진다.
실수를 방지하기 위해 커링 함수를 순서대로 조합하는 compost()함수를 만든다.
reduce()를 사용하면 함수를 조합해주는 함수를 만들 수 있다.
'Frontend > 자바스크립트 Java Script' 카테고리의 다른 글
Web APIs (0) | 2022.01.29 |
---|---|
[ES6] ES6란? (0) | 2021.08.25 |
[ES6] 객체 확장 표현식과 구조 분해 할당 (0) | 2020.11.09 |
[ES6] 화살표함수 (0) | 2020.11.09 |
[ES6] ES6 클래스 Class 가 존재하기 전 prototype 특수변수 사용 (0) | 2020.11.09 |