>>775
(>>=) :: Monad m => m a -> (a -> m b) -> m b
の第二引数の最初の引数が m で包まれてないので
>>= を実装するために m a から a を取り出せる必要がある
この条件が Arrow に比べてできないことが増えてる
これがMonadでは入力がパラメタ化されていないということ

>>780
MonadはArrowの特殊な場合
一般には、ArrowはMonadではないってところが重要
Monadになっている時点でArrowの能力全部を使っていないはず
Programming with Arrows では、Monadでは表現できなくてArrowでは表現可能なストリームの例がある