монад на практике, для прикладного программирования?) Чтобы увидеть их концептуальную пользу не на оторванных от жизни академических примерах
https://haskell.mooc.fi/part2#lecture-11-realworld---arealworld
https://philipnilsson.github.io/Badness10k/escaping-hell-with-monads/
IO в каждой программе
Это понятно)
а чего непонятно?
наверное, польза от абстрактной монады Monad m
Примеры прикладного программирования для реальных задач бизнеса и как наложить монады в таких приложениях
на прям абстрактной Monad m без дополнительных умений ничего специфичного для бизнеса не напишешь, очевидно.
не надо накладывать, надо брать те интерфейсы, что предоставляют компоненты, и пользоваться ими. потоки предоставляют Monad, парсеры предоставляют Monad, — это просто удобненько
монады скорее помогают писать более коротко/понятно/круто/молодёжно как раз очень общие вещи
посмотрите на потоки, например, conduit. использование монадных свойств там выглядит вот так, например: result <- await другие языки ждут по 20 лет, пока в них реализуют асинхронщину/сопроцедурщину, а в Хаскеле сразу библиотеки пишут благодаря Monad
Monad — это такой общий интерфейс, снимающий когнитивную нагрузку, типа IEnumerable в Яве или context manager в Питоне. видишь, что штука реализует интерфейс, и сразу автоматически знаешь, как с ней работать. как наложить IEnumerable или context manager на реальные задачи бизнеса?
Не яве, а C#. Для джавы это был бы, скажем, Iterable
спасибо, поправил
кстати, сейчас некоторые товарищи в С++ пытаются расширить co_await/co_yield до произвольных монад, сейчас они только для сопроцедур работают
Обсуждают сегодня