cot_shaurma
@cot_shaurma
Java и всего понемногу

Что такое монада?

Пытаясь понять, что такое монада. Определение из словаря:
это абстракция линейной цепочки связанных вычислений

Что этим пытался сказать автор, я без понятия (в остальных источниках определение не лучше). Я встретился с этим термином, когда читал про Stream в Java8. Вот цитата:
Streams (стримы/потоки) являются Монадами, которые играют большую роль в обеспечении функционального программирования в Java.


Как это понимать? Можете простыми словами объяснить, что такое монада?
  • Вопрос задан
  • 689 просмотров
Решения вопроса 1
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Вот, простое объяснение - https://urvanov.ru/2017/10/18/%D0%BC%D0%BE%D0%BD%D...
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Моноид в категории эндофункторов.
Ответ написан
@AlexSku
Программист по автоматике
Есть обычное вычисление a -> b
Монады же реализуют вычисления с эффектами:
Maybe - может быть неудача,
Список - много результатов,
Either - типизированные исключения,
(s, b) - запись в лог,
( (->) e ) b - чтение из внешнего окружения,
(State s) b - изменяемые состояния,
IO b - ввод-вывод (консоль, файлы).
(примеры для Haskel)
Ответ написан
pazukdev
@pazukdev
Java Dev
Монада - это абстракция над цепочкой связанных вычислений. Контейнер, который принимает текущее состояние и функцию, которая принимает это состояние в качестве аргумента и возвращает новое состояние. Этот контейнер инкапсулирует среду (контекст) выполнения вычислений с учетом возможных исключений; на выходе только ожидаемые значения. Вобщем, just a monoid in the category of endofunctors (c).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
NGRS Москва
от 250 000 до 350 000 ₽
Action tech Москва
от 100 000 до 250 000 ₽
Kotelov Санкт-Петербург
от 150 000 до 200 000 ₽
16 июн. 2021, в 03:33
4500 руб./за проект
16 июн. 2021, в 03:12
3500 руб./за проект
16 июн. 2021, в 01:15
45000 руб./за проект