En la mónada de error, la primera falla detiene cualquier ejecución aún más, simplemente llevando la falla a través de los siguientes enlaces.
¿Qué mónada se detiene en el éxito solo llevando éxitos y básicamente tragándose cualquier falla e intentando el siguiente enlace sin tener en cuenta el fracaso del anterior?
La mónada de error podría usarse para tratar este fracaso como un éxito, pero tengo curiosidad por saber si las bibliotecas predeterminadas tienen una mónada para este propósito específico, casi como una mónada O en mi mente "Haz esto o aquello"
Editar:
El comportamiento sería:
Left "fail" >>= (\x -> Right "win") >>= (\x -> Left "ahh neener") >>= (\x -> Right (x + " yay"))
En la mónada de error, el primer valor izquierdo solo se transfiere, por lo que el resultado es Left "fail"
. El comportamiento que quiero es donde lo anterior devuelve Right "win yay"
, es una mónada trivial para implementar que podría escribir yo mismo, pero pensé que algo existía para hacer eso (tal vez no usar Either, pero eso es lo primero que se me ocurre para ese comportamiento).