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

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

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

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

Новачки все менше шукають роботу у фронтенді

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

10.09.2025

Microsoft випустила інсайдерську збірку Visual Studio 2026

Microsoft завершує роботу над серйозним оновленням середовища розробки Visual Studio, головною метою якого є впровадження…

10.09.2025

Claude тепер може створювати та редагувати файли

Чат-бот на базі моделей Claude від компанії Anthropic тепер може створювати та редагувати електронні таблиці…

10.09.2025

Користувачі Windows зможуть працювати з файлами без необхідності їх відкривати

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

09.09.2025

Nvidia відкрила для українських студентів безкоштовний доступ до 11 курсів про штучний інтелект

Компанія Nvidia разом з Київським IT-кластером запускає для українських університетів безплатний доступ до платформи Deep…

09.09.2025

Google додає в Gemini підтримку аудіофайлів, завантаження папок з кодом і репозиторіїв

Компанія Google додала в Gemini можливість завантаження аудіофайлів на всіх платформах: Android, iOS та у…

09.09.2025