Monad インスタンスのモチベーション

Haskell の勉強を続けているわけですが、未だに Monad がすっきりと腑に落ちていません。

Monad則は理解できます。
個々の Monad Instance、Maybe や List、State と言った個別の instance に関しては、使い方もメリットも理解できます。
ただ逆に、こういう場合に Monad の instance を作ればいい、というのがまだはっきり判りません。

今のところ明確に理解できているのは Monad の instance にしておけば do記法が使えるようになる、っていうぐらいです。

デザインパターンを勉強するにあたって、そのパターンの目的とモチベーション(動機)というのが重要になります。

特に,パターンを理解するためには,最初にまず「目的」と「動機」を読む.そして,「問題」が何であり,それがどういう「文脈」で発生するかを把握することが先決である.「目的」には,「問題」が書かれることが多い.
...(中略)...
しかし,このような問題の記述は抽象的であることが多く,パターンによっては理解するのが難しい場合もある.「問題」の理解を助けるのが,「動機」の記述である.「動機」は,実際にそのような問題が起こる状況,すなわち文脈が,具体的な例を伴って書かれている.

- Java プログラマのためのデザインパターン入門

翻って、Monad でも同じような理解をしたいのですが、「計算を合成する」という目的があまりにも抽象度が高く、定着するにいたっていません。

この辺の理解を助けるドキュメントが何処かに無いものでしょうか。