Currying, або що спільного між програмуванням і McDonald’s

Сергій Єрьомін

А ви знали, що McDonald’s використовує каррінг (currying), коли клієнт робить замовлення, не виходячи з автомобіля?

Не те щоб власники McDonald’s готуються до співбесіди з програмування, але ж готуємось ми!

Тому поїхали: Каррінг (currying) — один з ключових принципів функціонального програмування, що дозволяє розбивати функцію з кількома аргументами на ланцюжок функцій з одним аргументом кожна.

Звучить складно, але насправді аналогія з Drive-thru в McDonald’s допоможе розібратися.

Уявіть, що ви під’їжджаєте до McDonald’s на автомобілі:

  1. На першому віконці ви робите замовлення: аргумент функції — ваш вибір.
  2. На другому віконці ви оплачуєте своє замовлення: аргумент — тип оплати: готівка чи картка.
  3. На третьому віконці ви отримуєте своє замовлення: остання функція виконується, аргумент — ви забираєте замовлення, або ви передумали і спитали, чи можемо отримати замовлення всередині ресторану (Авжеж, трохи дивна поведінка. Однак, у Маку вам ще морозиво за це дадуть😄).

makeOrder("Бургер")("Карта")("Drive-thru");

Оце і є той самий каррінг: кожен етап (функція) отримує свій аргумент і повертає нову функцію, яка очікує новий аргумент. В програмуванні це дозволяє створювати більш гнучкі та перевикористовувані функції.


Наприклад, маючи функцію makeOrder("Бургер")("Карта"), ми можемо створити нову функцію orderBurger = makeOrder("Бургер"), яка автоматично замовляє Бургер, повертає нову функцію, яка очікує вид оплати, як аргумент: orderBurger("Карта").

const orderBurger = makeOrder("Бургер");
const payWithCard = orderBurger("Карта");
payWithCard("Drive-thru");

Функціональне програмування з каррінгом допомагає нам розбивати складні завдання на простіші кроки.

Порівняйте зі звичайною функцією, коли ви підходите до стійки замовлення, одразу замовляєте, оплачуєте і отримуєте своє замовлення одним махом:

makeOrder("Бургер", "Карта", "Drive-thru");

Напишіть у коментарях, чи все зрозуміло!

Цей текст з особистого блогу, опублікований з дозволу автора.

Останні статті

Використання штучного інтелекту знижує розуміння кодової бази та перешкоджає розвитку розробників — дослідження Anthropic

Застосування інструментів на базі штучного інтелекту підвищує продуктивність, але знижує розуміння кодової бази та перешкоджає…

30.01.2026

ChatGPT Agent втратив 75% користувачів, оскільки ніхто не знає, для чого він потрібен

Компанія OpenAI може відмовитися від ChatGPT Agent — інструменту, який випустили лише шість місяців тому.…

30.01.2026

Експерти попередили про небезпеку LLM-моделей з відкритим кодом

У дослідженні, яке спільно провели компанії з кібербезпеки SentinelOne та Censys, стверджується, що LLM-моделі з…

30.01.2026

Онлайн перемагає офлайн? Зібрали досвід сучасних шкіл та ділимось, як технології допомагають навчатися краще

Ще кілька років тому дистанційне навчання сприймали як вимушений компроміс. Батьки чекали, коли світ повернеться…

30.01.2026

Google відкрила доступ до генератора ігрових світів Project Genie

Експериментальний генератор інтерактивних ігрових світів Project Genie від Google, який створює 3D-середовища з текстових або…

30.01.2026

Гейм-розробники більше не хочуть створювати ігри для Xbox

Платформи Steam та Windows лідирують в геймдеві, оскільки підтримка консолей, здається, більше не є пріоритетом…

30.01.2026