@mbme Що таке фп - широке питання, недавно на реддіті був батл на ну тему. Я не хочу холіворити, абощо, але все-таки думаю варто уточнити, сповільнити зростання інформаційної ентропії навколо цієї теми.
Програмування з immutable даними, чи там з використанням optional, чи з map/reduce, навіть якщо це назвати функціональним стилем - не є фп. Суть фп - це програмування, що базується явним чином на законах математики і логіки, на equational reasoning і ще подібних речах, для чого необхідно мати гарантії детермінізму від мови ітд. Якщо мова не пропонує тобі явно описувати твій наступний веб-фреймворк моноїдами, аплікативами, монадами, не може перевірити логічну коректність за допомогою типів (глобально, а не в межах однієї функції), ніяк не обмежує ефекти (а без цього про якийсь детермінізм неможливо говорити) - то це не фп, та й годі :-)
Статичні гарантії коректності роботи з памяттю - фішка раста - напряму вказують що раст не фп - бо в фп нема проблем роботи з пам’яттю. Робота з пам’яттю - це low level, деталі імплементації заліза, неважлива річ для фп. Завтра буде пам’ять що сама регулює доступ або ще по іншому працює, квантово якось, реплікується на кожну зміну - і імплементація раста буде неважлива. А фп залишиться і розквітне ще більше :-) ФП працює на вищому рівні, і не займається детялями реалізації низькорівневої залізяки. Це як в javascript ніхто не займається питаннями tcp/ip ітд.
Практично чистою фп мовою є хаскель, не чистою фп мовою є кложур, ерланг не є навіть не чистою фп мовою, ну а раст взагалі не фп мова :-)
наявність функцій вищого порядку це ще не lambda calculus сам по собі. Крім того, Lambda calculus - це ще не все з чого складається фп, особливо на сучасному рівні розвитку - про це чомусь постійно забувають, але lambda calculus - то далеко не вершина фп, а просто один зі спрощених варіантів від того ж typed lambda calculus. Сучасне фп, з теорією категорій і іншими системами типів, пішло ще дальше. Я писав вище емпіричні правила як визначити чи мова фп чи ні. Якщо ти під час програмування думаєш постійно і регулярно про функтори і монади - це, можливо, фп. Якщо ні - то це не фп, навіть якщо це лісп :-)
З іншого боку, я згоден що rust в такій самій мірі фп як і JavaScript/Python/Ruby, і в чуть меншій степені ніж лісп (лісп принаймі історичні заслуги має :-) От тільки усі вони не фп. Те що в описі у вікіпедії пишуть "мультипарадигменний" - це ще не достатня умова щоб бути фп. Це такий жарт. Машинні коди теж фп, бо ж навіть хаскель в результаті перетворюється на машинні коди. А ще машинні коди ооп, і усі інши *п разом взяті :-)
З цими всіма поняттями, назвами і тд дуже багато плутанини, і це вже стає небезпечним для ніакрєпших умов. Саме тому я от намагаюся по можливості уточняти поняття і терміни. З фп ще просто, от з ооп набагато більш запущено :-)
І ще одне базове відео в стилі попереднього: https://www.youtube.com/watch?v=Z35Tt87pIpg
Мы тоже ищем сейчас разработчика на Rust. Работа удаленная, основная часть команды находиться в Украине. Проект: платформа по управлению цифровыми активами на базе технологии блокчейн. Детальное описание на форуме: https://forum.rustycrate.ru/t/vakansiya-rust-razrabotchik-udalyonno/82
Если интересно, напишите мне: defuz@me.com, либо здесь в приватном чате.