mam monady dla obliczeń, które mogą zawieść i robi jakieś rejestrowanie:Aktualizacja zewnętrzną monady tylko w transformatorze monada
f1 :: WriterT [String] (Either String) a
Mam funkcję, która nie zawiedzie, ale robi trochę rejestrowanie:
f2 :: Writer [String] b
Jaki jest najlepszy sposób aktualizacji monada pisarza w f1 za pomocą dziennika z f2 i przechwytywania danych wyjściowych obliczenia f2? W tej chwili robię to:
f2result <- (\(r,l) -> do {tell l; return r}) (runWriter f2)
używam windy zaktualizować wewnętrzną monady z różnych obliczeń, więc przełączania wokół pisarza i monady albo nie rozwiąże problemu.
Thanks danr i zerwa za odpowiedzi. Wybrałem metodę zawijania. Chociaż mogłem zmienić typ f2, funkcja ta pojawia się w innych kontekstach, dlatego chciałbym napisać jej typ bez odniesienia do potrzeb konkretnej funkcji wywołującej. – mskel