tengo una mónada para un cálculo que pueden fallar y hace algún registro:Actualización mónada exterior sólo en el transformador mónada
f1 :: WriterT [String] (Either String) a
Tengo una función que no dejará pero tiene algunos tala:
f2 :: Writer [String] b
¿Cuál es la mejor manera de actualizar la mónada de escritor en f1 utilizando el registro de f2 y capturar el resultado del cálculo de f2? En el momento que estoy haciendo esto:
f2result <- (\(r,l) -> do {tell l; return r}) (runWriter f2)
estoy usando ascensor para actualizar la mónada interior con un cálculo diferente, por lo tanto cambiar todo el escritor y mónadas o bien no va a resolver el problema.
Gracias danr y rampion por sus respuestas. Elegí usar el método de ajuste. Aunque podría cambiar el tipo de f2, esa función aparece en otros contextos, por lo tanto, me gustaría escribir su tipo sin referencia a las necesidades de una función de llamada en particular. – mskel