>>22
埋めてないですよ?
私個人の見解では、モナドは入出力に対してはアウトソーシングの様な働きをすると認識しています。

IOモナドは外部に依頼(アウトソーシング)して、他のモナドは同じHaskell(数学)世界に依頼(同僚や部下に頼む感じ)する。

関数自体、アウトソーシング的な概念。
(それが数学の外にも向いたと考える)

Maybe

f >>= g

f = Just 0 -- 数学内へ初期化依頼

g = Just.(+1) -- +1してJustに入れる依頼


IO

f >>= g

f = readLn -- 外部へ初期化依頼。

g = print.(+1) -- +1して出力して、IOに()を入れる依頼

戻り値を破棄するf >> gの場合は完了報告だけしてくれれば良いよ。的な。
型が依頼書の書式とか、そんな感じ。