ありがとうございます。でもやっぱり判らない…。

mySequence [] = return []
mySequence (x:xs) = x >>= (\h -> mySequence xs >>= (\t -> return (h : t)))
と定義して、
mySequence [putChar 'a', putChar 'b', putChar 'c']
は、abcと出力しました。

でも、>>=がふたつあります。

前の>>=はxの文字の1文字出力、後の>>=はxsの文字列出力を作るので、
それぞれの文字は、文字としてと、連結途中の文字列として、の複数回出力される気がするのですが。