?

Log in

No account? Create an account
Previous Entry Share Next Entry
photo25

как научиться ФП (repost)

Оригинал взят у bvlb в как научиться ФП
Очень просто: запрещаешь себе менять переменные. Сам с собой договорился: менять переменные больше не буду. Никогда. На характер. Функции в результате становятся чистыми, циклов больше нет, приходится юзать мапы, фолды и прочие рекурсии. Объекты перестают быть гм.. аккумуляторами и аренами и начинают под действиями функций переходить в другие объекты, подозрительно напоминая всякие там алгебраические структуры над разными множествами. Дальше архитектура становится пиздецом и приходится лезть в гугл, смотреть разные либы и придумывать как композировать функции и вылезать из пиздеца. Мозг кипит, но переменных становится все меньше и баги как-то становятся пореже.

Для этого не нужен ни хаскел, ни эрланг, ни скала, вообще никакой "настоящий" функциональный язык для этого не нужен. Я это практикую сейчас на джаваскрипте, например. И на питоне примериваюсь, хотя боюсь получится гораздо страхолюднее. Хорошо бы конечно иметь в компиляторе/виртуальной машине элементарный флажок, который будет форсить это ограничение, но в качестве испытания духа можно и без.


  • 1
kodt_rsdn July 18th, 2015
А смысл?
Тацитная запись хороша тогда, когда легко отследить поток данных.
Например, в конвеере. Старый добрый юникс-вей.

Либо когда цена за именованность слишком велика. В том же APL/J/K, проще потрахаться и написать тацитно, чем сделать настолько же write-only, но на порядок более громоздкий код с буковками.

Для развития мозгов - полезно. Для практического применения... Компилятору в равной степени пофиг.

  • 1