T[]
고차 함수는 타입 관계를 다음 호출로 전달한다
인자 수보다 콜백의 입력과 반환이 다음 단계에서 어떻게 이어지는지를 본다.
(value: T) => U
U[]
다인자 함수를 단항 호출 사슬로 바꾼다
f(a, b, c): R
↓
(a: A) => (b: B) => (c: C) => R
const withA = curried(a); // B를 기다림
각 호출은 다음 함수를 반환하고, 앞에서 받은 값은 클로저가 기억한다.
원래 함수의 일부 인자를 미리 고정한다
format(locale, currency, value): string
↓
const won = format.bind(null, "ko-KR", "KRW");
won(12000); // 남은 value만 받음
커링과 함께 쓰일 수 있지만 같은 개념은 아니다. 원래 함수가 단항 사슬일 필요도 없다.
추론 보존
제네릭 T·U를 콜백 계약에 연결하면 입출력 관계가 호출부까지 흐른다.
비동기 함정
async 콜백은 Promise<boolean>을 반환한다. 동기 filter의 참·거짓 판정과 의미가 다르다.