Monad¶
monad.types.monad - The Monad Class.
- class monad.types.monad.Monad(value)[source]¶
Bases: monad.types.applicative.Applicative
The Monad Class.
Implements bind operator >> and inverted bind operator << as syntactic sugar. It is equivalent to (>>=) and (=<<) in haskell, not to be confused with (>>) and (<<) in haskell.
As python treats assignments as statements, there is no way we can overload >>= as a chainable bind, be it directly overloaded through __irshift__, or derived by python itself through __rshift__.
The default implementations of bind, fmap and join are mutual recursive, subclasses should at least either overload bind, or fmap and join, or all of them for better performance.
- bind(function)[source]¶
The bind operation.
function is a function that maps from the underlying value to a monadic type, something like signature f :: a -> M a in haskell’s term.
The default implementation defines bind in terms of fmap and join.
- fmap(function)[source]¶
The fmap operation.
The default implementation defines fmap in terms of bind and unit.