Most of the monads I can think of belong in one or both of these categories:
State
Can be modelled as a state monad
- Reader
- Writer
- State
- ST
- STM
- function (
((->) r)
) - Identity (state with no state)
Error
Sequencing with early exit
- Maybe
- Either
- ErrorT
Both
- IO (with the real world as state)
- parser combinators
The only (useful) exception I can think of, whose functionality is clearly distinct from both these categories, is List (and Cont, which is merely a generalization of Monad itself).
Are there any other monads, that canāt be modelled exclusively by either category, that I have missed?