>>49724Фрустрация после изучения и использования ООП превышало всевозможные пределы - огромное количество бойлеплейта, отсутствие математических основ и неуклюжее взаимодействие объектов между собой - приходилось всеми силами заставлять себя писать этот код, от чего ситуация становилась только хуже. А потом я узнал о функциональном программировании - полистал SICP вместе с лекциями, узнал про Хаскель - и дороги назад уже не было. Язык предлагал элегантные и миниатюрные решения для всех проблем, которые у меня возникали с ООП, да при этом с крепкой математической основой и дюжиной публикаций за ними. Переиспользование стало чем-то достижимым, конкурентность перестала быть такой головной болью, да и эстетически, ты просто посмотри как сексуально выглядит код, написанный на Хаскеле!
Так и случилось.
Не думаю, что кроме LYAH есть еще какая-нибудь легкая для чтения литература. Интересной же достаточно.
О параллелизме и конкурентности:
https://simonmar.github.io/pages/pcph.htmlОбо всем-всем-всем, но очень сжато:
http://dev.stephendiehl.com/hask/Множество публикаций с авторством Simon Peyton Jones, Simon Marlow и John Hughes достаточно просты и интересны для чтения. Все публикации серий Functional Pearl также стоят хотя бы ознакомления (Мной не все прочитано, конечно же!).
В последнее время я не так и много читаю, скорее собираю небольшое портфолио, которого будет достаточно для нахождения работы на Хаскеле.
Ты говоришь про The Essence Of The Iterator Pattern публикацию? Как я помню, она не про IO, а про реализацию
foreach в функциональных языках.
https://www.researchgate.net/publication/220676565_The_essence_of_the_Iterator_patternВ целом для реализации эффектов сейчас используется три подхода:
- Большой стек монад-трансформеров, каждый из которых предлагает какие-то свои уникальные эффекты. Xmonad будет одним из самых известных представителей:
https://wiki.haskell.org/Xmonad/Guided_tour_of_the_xmonad_source- Один Reader, который носит в себе огромное состояние всей программы, и typeclass'ы, для доставания специфических частей состояния. Этот подход один из самых простых, и при этом избегает большинства проблем, возникающих с трансформерами.
https://www.fpcomplete.com/blog/2017/06/readert-design-pattern- Использование свободных (читай, как структура) монад для разделения интерпретации и выполнения эффектов. По нему есть неплохая книжка, но примеров хороших очень мало. Однако в сфере единое мнение сейчас, что это и есть путь вперед.
https://www.youtube.com/watch?v=kIwd1D9m1gEhttps://github.com/chiroptical/polysemy-playgroundhttps://github.com/graninas/Functional-Design-and-ArchitectureАх, нет, ты говоришь немножко про другое. Ты про библиотеки, избегающие ленивого IO:
Если я не понимаю тему, то я обычно иду читать блогпосты Сноумена - он всегда старается все объяснить наиболее простым языком.
https://github.com/snoyberg/conduit#readmeК слову он и является "создателем" идеи с использованием одного Reader'a.
Если будут интерсные вопросы и интересные статьи, то не забывай зайти и поделиться, да!