失敗する可能性のある計算のモナドがあり、ログを記録します。
f1 :: WriterT [String] (Either String) a
失敗しない関数がありますが、ログを記録します。
f2 :: Writer [String] b
f2からのログを使用してf1のライターモナドを更新し、f2計算の出力をキャプチャするための最良の方法は何ですか?現在、私はこれを行っています:
f2result <- (\(r,l) -> do {tell l; return r}) (runWriter f2)
私はリフトを使用して内部モナドを別の計算で更新しているので、ライターとどちらかのモナドを切り替えても問題は解決しません。