I frequently find use for what I call the \"purely applicative Either
\", i.e. Either
with the Applicative
instance available so long as we
This looks pretty similar to the AccValidation type in the validation
package: http://hackage.haskell.org/package/validation-0.3.1/docs/Data-Validation.html
Edit:
In particular the following instance declaration:
instance Semigroup err => Apply (AccValidation err) where
AccFailure e1 <.> AccFailure e2 =
AccFailure (e1 <> e2)
AccFailure e1 <.> AccSuccess _ =
AccFailure e1
AccSuccess _ <.> AccFailure e2 =
AccFailure e2
AccSuccess f <.> AccSuccess a =
AccSuccess (f a)