Каррирование и частичное применение
Вопрос
Что такое каррирование и чем оно отличается от частичного применения?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
каррирование превращает функцию n аргументов в цепочку функций одного
частичное применение фиксирует часть аргументов и возвращает функцию остальных
и то и другое строится на замыкании
практика: конфигурируемые обработчики, логгеры, селекторы
bind - встроенное частичное применение
Что могут спросить следом
- Напиши curry, который работает и как f(a)(b), и как f(a, b)
- Чем это отличается от композиции функций
- Где каррирование вредит читаемости
Разбор
Каррирование превращает f(a, b, c) в f(a)(b)(c) - цепочку функций по одному
аргументу. Частичное применение фиксирует часть аргументов и возвращает функцию,
ждущую остальные: f.bind(null, a) - уже частичное применение.
Оба приёма работают на замыкании. На практике они дают заготовки: log('warn') возвращает
логгер уровня warn, getBy('id') - селектор по полю. В интерфейсах это способ не плодить
стрелки в JSX на каждый рендер.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.