@lambda_yam@shitpost.poridge.club в программировании монада - это интерфейс. Тип M<_> (в нотации а-ля плюсы (или раст?)) может имплементировать монаду, если поддерживает две операции:
- return : A -> M<A>, т.е. умеет "оборачивать" любое значение
- bind : (M<A>, A -> M<B>) -> M<B>, т.е. позволяет к значению типа M<A> прицепить "коллбек" A -> M<B> и получить значение типа M<B>
Примеры: Maybe<_>, Result<E, _>, Promise<_>, List<_>