Nella monade dell'errore, il primo errore arresta qualsiasi esecuzione ulteriormente portando semplicemente l'errore attraverso i seguenti binding.
Quale monade si ferma sul successo solo portando avanti i successi e fondamentalmente inghiottendo eventuali errori e provando il prossimo legame trascurando il fallimento del precedente?
L'errore monad potrebbe forse essere usato per il fallimento di questo trattamento come il successo, ma sono curioso di sapere se le librerie di default hanno una monade per questo scopo specifico, quasi come una monade O nella mia mente "Fai questo o quello"
Modifica:
Il comportamento sarebbe:
Left "fail" >>= (\x -> Right "win") >>= (\x -> Left "ahh neener") >>= (\x -> Right (x + " yay"))
Nell'errore monade il primo valore a sinistra viene semplicemente portato avanti, quindi il risultato è Left "fail"
. Il comportamento che voglio è dove il sopra restituisce Right "win yay"
è una monade banale da implementare potrei scrivere me stesso, ma ho pensato che esistesse qualcosa per farlo (forse non usando Either, ma questa è la prima cosa che mi viene in mente per un simile comportamento).