#loop :: a -> (b -> IO ()) -> IO c みたいな関数があります。aはファイルハンドルのようなもので、(b -> IO ())はループに渡される1ステップ処理用の関数です。bで1レコード分のデータが渡ってくるので処理してIOすることを想定しているっぽい。
#で、ちょっとカスタマイズしたくてステートを持たせたい。
#loopST :: a -> (b -> StateT History IO ()) -> StateT History IO ()みたいな感じ。
#最後のStateT History IO cはもしかしたらIO cのままでもいいかもしれない。よくわからん。
#こういうのってどうすればいいんでしょうか。