Выбор ответа Middle Функции высшего порядка обновлено

Каррирование против частичного применения

Вопрос

Чем каррирование отличается от частичного применения?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Каррирование делает из f(a, b, c) цепочку f(a)(b)(c), частичное фиксирует часть. Каррирование меняет форму функции: она принимает аргументы по одному (или группами) до тех пор, пока их не наберётся нужное число.

Варианты ответа

  1. Это синонимы: оба приёма фиксируют первый аргумент и возвращают новую функцию
  2. Каррирование работает только со стрелками, а частичное применение только с bind
  3. Каррирование делает из f(a, b, c) цепочку f(a)(b)(c), частичное фиксирует частьправильный ответ
  4. Частичное применение вызывает функцию сразу, а каррирование откладывает вызов

Разбор

Каррирование меняет форму функции: она принимает аргументы по одному (или группами) до тех пор, пока их не наберётся нужное число. Частичное применение один раз фиксирует часть аргументов: const add5 = add.bind(null, 5). Каррированную функцию удобно частично применять, поэтому их путают, но это разные операции. Оба приёма можно реализовать любыми функциями, bind лишь один из способов. И оба возвращают новую функцию, а не вызывают исходную сразу.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.