JavaScript Currying 4 - 추적
const trace = (label) => (value) => {
console.log(`${label}: ${value}`);
return value;
};
const compose = (...functions) => (x) =>
functions.reduceRight((y, f) => f(y), x);
const g = (n) => n + 1;
const f = (n) => n * 2;
const h = compose(
trace('after f'), // 'after f: 42'
f,
trace('after g'), // 'after g: 21'
g
); // function application order is from bottom to top
h(20); // => 42
Compose는 환상적인 유틸리티일 수 있지만 코드를 읽는 더 편리한 방법은 위에서 아래로입니다.
const trace = (label) => (value) => {
console.log(`${label}: ${value}`);
return value;
};
const g = (n) => n + 1;
const f = (n) => n * 2;
const pipe = (...functions) => (x) => functions.reduce((y, f) => f(y), x);
// updated usage
const h = pipe(
g,
trace('after g'), // 'after g: 21'
f,
trace('after f') // 'after f: 42'
); // function application order is from top to bottom
h(20); // => 42
Currying은 특수 기능에 대한 유용한 추상화일 수 있습니다.
const map = (fn) => (mappable) => mappable.map(fn);
const double = (n) => n * 2;
const doubleAll = map(double);
doubleAll([1, 2, 3]); // => [2, 4, 6]
trace
함수가 커리링되지 않은 경우 다음과 같이 표시됩니다.const g = (n) => n + 1;
const f = (n) => n * 2;
const pipe = (...functions) => (x) => functions.reduce((y, f) => f(y), x);
const trace = (label, value) => {
console.log(`${label}: ${value}`);
return value;
};
const h = pipe(
g,
(x) => trace('after g', x), // 'after g: 21'
f,
(x) => trace('after f', x) // 'after f: 42'
);
h(20); // => 42
데이터 마지막 스타일은 함수가 먼저 전문화 매개변수를 취하고 나중에 데이터를 가져와야 함을 의미합니다.
부분적으로 적용된 함수에 적용된 인수를 고정 매개변수라고 합니다.
포인트 프리 스타일은 인수를 참조하지 않고 함수를 정의하는 방법입니다. 포인트 프리 함수는 커리 함수와 같은 함수를 반환하는 함수를 호출하여 생성됩니다.
Reference
이 문제에 관하여(JavaScript Currying 4 - 추적), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/lukaspolak/currying-4-trace-3fp0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)