>>342
実際「役に立つ概念」ってのはそう多くなくて,自然に定義する限り
まともな概念はだいたいモナドになってくれるはず.
(ならないものはだいたい使い物にならない概念だと思う)
332 の流れに沿って IO の文字表示の部分を解釈すると:

1. まず「画面に何か表示する計算」を定義したいと思いつく.

2. 画面の状態を表す型を W で表すことにすると,函手は
  T X = (X, W),T f = (f, id) とするとよさそうな気がする.

3. 画面に何か表示する関数 f : X -> T X があったとき,
  その持ち上げ f*: T X -> T X は
   f* (x,u) = (y, w)
    where (y,v) = f x, w = (u と v を合成した状態)
  が自然な気がする.

4. 型 X の T X への読み替え j : X -> T X は
  j x = (x, w) where w = (何も表示されていない状態)
  が自然な気がする.

5. 上で定義した三つ組み (T, j, *) はモナドになっている.