Стендап Сьогодні
📢
Канал в Telegram @stendap_sogodni
🦣
@stendap_sogodni@shevtsov.me в Федиверсі
06.05.2025
Карі
Це — кущ карі
🥘 Є така приправа — карі. її всі знають. (В Берліні варять сосиску, ріжуть на шматочки, посипають карі та кетчупом — називається карівурст.)
А ще є листя дерева карі, яке використовується в деяких карі. А ще є цмин італійський — який теж звуть “кущ карі”.
Між цими трьома назвами немає прямого звʼязку. Бо в першооснові карі - це страва, родом з Індії, яка фактично та буквально є підливою (зазвичай — для рису.) Та якщо замість чужого “карі” казати рідне “підлива”, то відразу зрозуміло, що є “приправа для підливи”, а є “листя для підливи”, та це такі ж різні речі, як спеції для плову та лаврушка. (Ну, цмин в цю систему не вписується, бо його назвали на честь суміші спецій за пряний аромат. Росте він в середземноморському регіоні та в карі його не кладуть.)
(Ще є японський карі, він же ж каре райсу, який насправді є стравою британського флоту. Тому не містить жодного японського інгредієнта, та й навіть індійського теж, а натомість цілком почувається вдома в європейській кухні.)
Але я взагалі не про те. Є така операція — каррінг, а англійською - currying
. Це коли ви функцію багатьох аргументів розкладаєте у вкладені функції одного аргументу. А в практичному сенсі, зазвичай, навпаки — відкусюєте від великої функції декілька аргументів:
function queryDB(db, query) {}
const query = _.partial(queryDB, myDB); // queryDB(db)(query)
query("SELECT foo");
У функціональному стилі програмування через каррінг можна спрощувати код та приховувати деталі реалізації — схоже до інкапсуляції в ООП. Та для того є гарна порада — аргументи функцій завжди впорядковувати від найбільш сталих до найбільш змінних.
А що спільного в каррінга зі смачною підливкою? Аж нічого! Бо названа ця операція на честь математика Гаскелла Каррі, так само як і мова Haskell.