>>778-779
展開がおかしい。

まず、mySequenceの定義から
mySequence (putChar 'c':[])
= putChar 'c' >>= (\h -> mySequence [] >>= (\t -> return (h:t)))
= putChar 'c' >>= (\h -> return [] >>= (\t -> return (h:t)))

ここで、モナド則から
return [] >>= (\t -> return (h:t))
= return (h:[])

よって、
mySequence (putChar 'c':[])
= putChar 'c' >>= (\h -> return (h:[]))

ちなみに、putChar 'c' の型は IO () なので、hに代入されるのは'c'ではなく () 。
なので、mySequence [putChar 'a', 略] >>= print とすると、
abc[(),(),()]と表示される。