>>623
仮に、[(入力時の時間, 一行文字列)] というリストがあれば、
これを秒数でグループ分け(group)したリストに対して
ファイル出力関数を mapM_ すればいい。

で、このリストをどうやって作るかだが、リアルタイムではなく、
全てのデータの入力を待ってから一気にファイル出力するのなら、
一行読み取る処理と現在時刻を求める処理をループで回せばいい。
(ループで回すというのは、再帰でも何でもいいから、とにかく繰り返すこと)

リアルタイムでやるのなら、unsafeInterleaveIO を使って作ればいい。
使い方はググれば結構出てくるから、とりあえず概略だけ言うと、

f : IO [ (入力時の時間, 一行文字列)]
f = unsafeInterleaveIO $ do
d@(入力時の時間, 一行文字列) <- 読み取り関数
if 終了? then (return []) else (return $ d : f)

という感じの関数 f を作ればいい。
後は、初めに言った group と mapM_ をすれば、遅延評価の働きで、
自動的に一秒毎にファイル出力されるはず。