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

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

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

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

В Китаї планують виробляти скляні оптичні диски місткістю 360 ТБ. Їх розробили в Ухані

До кінця 2025 року у Китаї планують налагодити масове виробництво нової технології зберігання даних –…

25.07.2025

OpenAI запустить GPT-5 вже у серпні

Один з лідерів у галузі штучного інтелекту, компанія OpenAI, планує запустити свою нову мовну модель…

25.07.2025

Google тестує інструмент для вайб-кодингу Opal

Google тестує інструмент для вайб-кодування під назвою Opal. Поки він доступний користувачам лише в США…

25.07.2025

App Store запроваджує додаткові вікові обмеження для програм: 13+, 16+ і 18+

Маркетплейс мобільних застосунків App Store оновив віковий рейтинг для програм. Додано нові рейтингові обмеження та…

25.07.2025

Американку посадили на 8,5 років за «ферму ноутбуків» для північнокорейських програмістів

Жительку Аризони, яка облаштувала у себе вдома ферму з 90 ноутбуків, допомагаючи північнокорейським ІТ-спеціалістам видавати…

25.07.2025

В Android додали можливість запуску графічних програм Linux

На канал Android Canary, який прийшов на зміну Android Developer Preview і використовується для тестування…

25.07.2025