Na mônada de erro, a primeira falha interrompe ainda mais a execução, apenas levando a falha através das ligações seguintes.
Que mônada pára no sucesso apenas levando adiante sucessos e basicamente engolindo falhas e tentando o próximo vínculo, desconsiderando o fracasso do anterior?
Talvez a mônada de erro possa ser usada para tratar essa falha como um sucesso, mas estou curioso para saber se as bibliotecas padrão têm uma mônada para esse fim específico, quase como uma mônada Ou na minha mente "Faça isso ou aquilo"
Editar:
O comportamento seria:
Left "fail" >>= (\x -> Right "win") >>= (\x -> Left "ahh neener") >>= (\x -> Right (x + " yay"))
Na mônada de erro, o primeiro valor à esquerda é apenas transportado, portanto o resultado é Left "fail"
. O comportamento que eu quero é onde o retorno acima Right "win yay"
é uma mônada trivial para implementar, eu poderia escrever por mim mesmo, mas percebi que existia algo para fazer isso (talvez não esteja usando o Either, mas é a primeira coisa que vem à mente para esse comportamento).