I recently wrote an article[0] about implementing a new Monad. It starts off with a simple premise and solution that slowly builds up the use case to the point where something more complex is needed to satisfy additional capabilities but also a more ergonomic system which eventually leads into creating a new type of monad.
I find this approach can make understanding the intuition behind monads more approachable.
I find this approach can make understanding the intuition behind monads more approachable.
[0] https://sambernheim.com/#/blog/building-a-monad