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

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

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

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

Екс-менеджер Meta: Лише 2% розробників використовують штучний інтелект правильно. Решта ризикують своєю роботою

Кун Чен — колишній розробник Microsoft та Atlassian, а також інженерний менеджер Meta — впевнений:…

01.05.2026

Пентагон розробляє лазерну зброю потужністю 300 кВт для знищення крилатих ракет

Міністерство оборони США офіційно підтверджує роботу над принципово новою системою лазерної зброї в рамках масштабної…

01.05.2026

GPT-5.5 зрівнявся з Claude Mythos у тестах на кібератаки — висновки британського AISI

Британський Інститут безпеки штучного інтелекту (AISI) перевірив модель штучного інтелекту GPT-5.5 від OpenAI і встановив,…

01.05.2026

«Термінатора» в зал суду не пустили: Ілон Маск перетворив позов проти OpenAI на sci-fi шоу

Ілон Маск три дні свідчив в рамках судового позову проти Сема Альтмана та OpenAI —…

01.05.2026

Програмна археологія: Microsoft публікує код найстарішої версії DOS, яку вважали втраченою

Microsoft продовжує розкривати сторінки своєї цифрової спадщини. Днями компанія опублікувала найстаріший із виявлених на сьогодні…

01.05.2026

Моделі Anthropic з’являться в Microsoft Word для роботи з документами

Компанія Microsoft оголосила про додавання моделей штучного інтелекту від Anthropic до Microsoft 365 Copilot у…

01.05.2026