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");

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

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

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

FAVBET Tech сплатили ₴650 млн податків у 2025-му. Це 20 тис. дронів або 40 тис. антидронових рушниць

За дев’ять місяців 2025 року українська ІТ-компанія FAVBET Tech перерахувала до державного бюджету понад 650…

24.10.2025

Microsoft додає в Copilot групи з підтримкою до 32 учасників, режим репетитора Learn Live та анімованого помічника

Microsoft впроваджує деякі суттєві зміни до свого помічника Copilot. По-перше, з’явилася нова функція груп, яка…

24.10.2025

У Google Meet з’явились «кімнати очікування»

Компанія Google додає в свій сервіс відеозв'язку Meet «кімнати очікування», які покращують контроль над онлайн-зустріччю…

24.10.2025

ChatGPT тепер може аналізувати внутрішні корпоративні дані

OpenAI додає в ChatGPT функцію під назвою Company knowledge. Вона працює на базі версії GPT-5,…

24.10.2025

PyTorch представляє Monarch — фреймворк для програмування на тисячах комп’ютерів

Команда PyTorch випустила фреймворк з відкритим кодом Monarch, який дозволяє Python-розробникам програмувати розподілені системи так,…

24.10.2025

Агент Cursor врятував розробника від хакера, який видавав себе за українця

Розробник Девід Додда каже, що був лише «за 30 секунд» від запуску шкідливого програмного забезпечення…

24.10.2025