고차 함수는 타입 관계를 다음 호출로 전달한다

인자 수보다 콜백의 입력과 반환이 다음 단계에서 어떻게 이어지는지를 본다.

SOURCE T[]
CALLBACK (value: T) => U
RESULT U[]
CURRYING

다인자 함수를 단항 호출 사슬로 바꾼다

f(a, b, c): R
↓
(a: A) => (b: B) => (c: C) => R

const withA = curried(a); // B를 기다림

각 호출은 다음 함수를 반환하고, 앞에서 받은 값은 클로저가 기억한다.

PARTIAL

원래 함수의 일부 인자를 미리 고정한다

format(locale, currency, value): string
↓
const won = format.bind(null, "ko-KR", "KRW");
won(12000); // 남은 value만 받음

커링과 함께 쓰일 수 있지만 같은 개념은 아니다. 원래 함수가 단항 사슬일 필요도 없다.

추론 보존 제네릭 T·U를 콜백 계약에 연결하면 입출력 관계가 호출부까지 흐른다.

비동기 함정 async 콜백은 Promise<boolean>을 반환한다. 동기 filter의 참·거짓 판정과 의미가 다르다.