úÎ`ˆ     Safe-Inferred+-./0`Applicative functor which collects all the fails instead of immediate returning first fail like  Ð. It can not be a monad because of differenct logic in Applicative. Applicative instance of Fail continue to fold fails even when 'Fail e Nothing' pattern is met. Monad instance can not behave like that, so  have no Monad instanceExample usage::(,,) <$> Fail [10] (Just 10) <*> Success 10 <*> Success 20Fail [10] (Just (10,10,20))'(,) <$> Fail [1] Nothing <*> Success 10Fail [1] Nothing1(,) <$> Fail [1] (Just 10) <*> Fail [2] (Just 20)Fail [1,2] (Just (10,20)) or like that:!(,) <$> ffail "oups" <*> fsucc 10Fail ["oups"] Nothing8(,,) <$> fwarn "oups" 10 <*> fwarn "meh" 20 <*> fsucc 30%Fail ["oups","meh"] (Just (10,20,30))2(,,) <$> ffail "oups" <*> ffail "meh" <*> fsucc 30Fail ["oups","meh"] NothingKThis type is usefull for form parsing and returning your own type of errors1(Just a) when checking may proceed in Applicative Join two fails like monad does ÂThis is a monadic-like bind. It breaks computation like Maybe and does not correspond to Applicative instance behaviour. So, instead of implementing Monad instance we just implement separate bind operator           applicative-fail-0.0.2Control.Applicative.FailFailSuccessffailfwarnfsucc failEithergetFailgetSuccjoinFailbindFail composeFailbase Data.EitherEither $fMonoidFail$fApplicativeFail$fBifunctorFail