Previous Entry Share Next Entry
photo25

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

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

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


  • 1
rinnve July 18th, 2015
Отчего же, я прекрасно знаю, что будет происходить с этим кодом, если список вдруг окажется уже отсортированным.

ex_juan_gan July 18th, 2015
Это стандартное поведение квиксорта, нет?

rinnve July 19th, 2015
Это стандартное поведение неправильно написанного квиксорта. Хоар ещё в оригинальной публикации рекомендовал pivot выбирать рандомно, чтобы свести шанс деградации до N^2 к минимуму.

ex_juan_gan July 21st, 2015
А кстати да, можно ли тут функционально написать случайный выбор пивота...

wizzard0 July 21st, 2015
Если случайный - то это IO которое читает из мира.
Если псевдослучайный - то это какое-то State где протаскивается сид RNG.

  • 1
?

Log in

No account? Create an account