У меня есть монада для вычислений, которые могут завершиться ошибкой и вести журнал:
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 не решит проблему.