@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<_>