Стендап Сьогодні
📢 Канал в Telegram @stendap_sogodni
🦣 @stendap_sogodni@shevtsov.me в Федиверсі

🤖🚫 AI-free content. This post is 100% written by a human, as is everything on my blog. Enjoy!

06.05.2025

Карі


Це — кущ карі

🥘 Є така приправа — карі. її всі знають. (В Берліні варять сосиску, ріжуть на шматочки, посипають карі та кетчупом — називається карівурст.)

А ще є листя дерева карі, яке використовується в деяких карі. А ще є цмин італійський — який теж звуть “кущ карі”.

Між цими трьома назвами немає прямого звʼязку. Бо в першооснові карі - це страва, родом з Індії, яка фактично та буквально є підливою (зазвичай — для рису.) Та якщо замість чужого “карі” казати рідне “підлива”, то відразу зрозуміло, що є “приправа для підливи”, а є “листя для підливи”, та це такі ж різні речі, як спеції для плову та лаврушка. (Ну, цмин в цю систему не вписується, бо його назвали на честь суміші спецій за пряний аромат. Росте він в середземноморському регіоні та в карі його не кладуть.)

(Ще є японський карі, він же ж каре райсу, який насправді є стравою британського флоту. Тому не містить жодного японського інгредієнта, та й навіть індійського теж, а натомість цілком почувається вдома в європейській кухні.)

Але я взагалі не про те. Є така операція — каррінг, а англійською - currying. Це коли ви функцію багатьох аргументів розкладаєте у вкладені функції одного аргументу. А в практичному сенсі, зазвичай, навпаки — відкусюєте від великої функції декілька аргументів:

function queryDB(db, query) {}
const query = _.partial(queryDB, myDB); // queryDB(db)(query)
query("SELECT foo");

У функціональному стилі програмування через каррінг можна спрощувати код та приховувати деталі реалізації — схоже до інкапсуляції в ООП. Та для того є гарна порада — аргументи функцій завжди впорядковувати від найбільш сталих до найбільш змінних.

А що спільного в каррінга зі смачною підливкою? Аж нічого! Бо названа ця операція на честь математика Гаскелла Каррі, так само як і мова Haskell.