У меня есть монада для вычисления, которое может дать сбой, и которое ведет ведение журнала:
f1 :: WriterT [String] (Either String) a
У меня есть функция, которая не завершается ошибкой, но выполняет ведение журнала:
f2 :: Writer [String] b
] Каков наилучший способ обновить монаду записи в f1, используя журнал из f2, и зафиксировать вывод вычислений f2? В настоящий момент я делаю следующее:
f2result <- (\(r,l) -> do {tell l; return r}) (runWriter f2)
Я использую lift для обновления внутренней монады с другим вычислением, поэтому переключение между монадами Writer и Someone не решит проблему.