Задать вопрос
cot_shaurma
@cot_shaurma
Java и всего понемногу

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

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

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


Как это понимать? Можете простыми словами объяснить, что такое монада?
  • Вопрос задан
  • 900 просмотров
Подписаться 4 Средний 2 комментария
Решения вопроса 1
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Пригласить эксперта
Ответы на вопрос 4
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Моноид в категории эндофункторов.
Ответ написан
Комментировать
pazukdev
@pazukdev
Java Dev
Монада - это абстракция над цепочкой связанных вычислений. Контейнер, который принимает текущее состояние и функцию, которая принимает это состояние в качестве аргумента и возвращает новое состояние. Этот контейнер инкапсулирует среду (контекст) выполнения вычислений с учетом возможных исключений; на выходе только ожидаемые значения. Вобщем, just a monoid in the category of endofunctors (c).
Ответ написан
Комментировать
@AlexSku
не буду отвечать из-за модератора
Есть обычное вычисление a -> b
Монады же реализуют вычисления с эффектами:
Maybe - может быть неудача,
Список - много результатов,
Either - типизированные исключения,
(s, b) - запись в лог,
( (->) e ) b - чтение из внешнего окружения,
(State s) b - изменяемые состояния,
IO b - ввод-вывод (консоль, файлы).
(примеры для Haskel)
Ответ написан
@potan
Функциональный программист
Монада - это общий интерфейс, который позволяет унифицировано работать с очень разными сущностями, такими как списки, парсеры, IO-операции (как синхронные, так и асинхронне).
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы