Как стать автором
Обновить

Комментарии 6

и переносов?
Спасибо, поправили)
НЛО прилетело и опубликовало эту надпись здесь
Так облегчение-то в чём состоит?

Вместо преобразований накатать свои классы присваиваний (на всякий случай: интересует подход для С++)?

А если существующий код изменяет состояние (слегка не-функциональный подход)? Всё перепишем?
А многопоточность (API OS отдаёт данные в колбэке в каком-то своём потоке. Если что — это штатная работа при получении звуковых данных)? Ещё перепишем?

Даже банальные цепочки вызовов (типа промисы и т.п.): если нужно отбросить не всю цепочку, а вернуться на некоторый пред-предыдущий этап (и точка возврата — меняется)? Типа: поставили сокет в listen; получили коннект; получили пакет; разбор пакета. Если разбор вернул ошибку — ждём следующий пакет (прыгаем на шаг назад). Если коннект развалился — ждём коннект. Но, боже упаси, по каждому пуку закрывать сокет и ставить новый с listen.

Или: если что-то сломалось — то сломай до конца. Жестковато по ресурсам (например, если открывается собственное устройство и второй раз его переоткрыть — это ещё тот гемморой).

Или: пользуйтесь уже написанными библиотеками, которые всё разрулят сами? Типа складывайте кубики как лего? Жутко ограничивающий подход.

Не слишком ли революционно?

Вы правы, для C++ применение фукциональщины может сыграть злую шутку, более того, этот язык чаще используется в решениях, где критичным является скорость выполнения и существуют ограничения на доступную оперативная память.

В статье мы упоминали что данный подход отлично применим в функционально ориентированных языках — Scala, Swift и, в меньшей мере, JavaScript.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий