úÎ%¨"»%      !"#$Safe0DRThe Validate. class carries around witnesses that the type fA is isomorphic to AccValidation, and hence isomorphic to Either.An  AccValidation is either a value of the type err or a , similar to %. However, the & instance for  AccValidation  accumulates errors using a ' on err. In contrast, the  Applicative for Either returns only the first error.A consequence of this is that  AccValidation has no  or R instance. This is because such an instance would violate the law that a Monad's  must equal the  Applicative's ()An example of typical usage can be found  Dhttps://github.com/qfpl/validation/blob/master/examples/src/Email.hshere.s the a% with the given predicate, returning e if the predicate does not hold.7This can be thought of as having the less general type: 7validate :: e -> (a -> Bool) -> a -> AccValidation e a  is   specialised to )2 lists, since they are a common semigroup to use.Converts from % to .   is useful for converting an % to an  when the Left of the % needs to be lifted into a '.   is the catamorphism for  AccValidation. Converts from  to %. v   a returns a when v is AccFailure, and the a in  AccSuccess a.7This can be thought of as having the less general type: &orElse :: AccValidation e a -> a -> a  Return the a$ or run the given function over the e.7This can be thought of as having the less general type: .valueOr :: (e -> a) -> AccValidation e a -> a # gets the value out of either side.J leaves the validation unchanged when the predicate holds, or fails with e otherwise.7This can be thought of as having the less general type: Eensure :: e -> (a -> Bool) -> AccValidation e a -> AccValidation e a This prism generalises (. It targets the failure case of either % or .This prism generalises  (. It targets the success case of either % or .' converts between any two instances of .0*+,-./0123456 78   ,*+,-./0123456 78 9     !"#$%&'()*+,-./01/23/45/26/789:;<=>?@ABCDEFGH'validation-0.6.1-Es7BYkLOIwj7RKU9H5hgFbData.ValidationData.Functor.BindBind Control.MonadMonadapControl.Lens.Prism_Left_RightValidate_AccValidation_Either AccValidation AccFailure AccSuccessvalidate validationNel fromEither liftError validationtoEitherorElsevalueOr codiagonalensure_Failure_Success revalidate$fValidateEither$fValidateAccValidation$fSwappedAccValidation$fMonoidAccValidation$fSemigroupAccValidation$fBitraversableAccValidation$fBifoldableAccValidation$fBifunctorAccValidation$fTraversableAccValidation$fFoldableAccValidation$fAltAccValidation$fApplicativeAccValidation$fApplyAccValidation$fFunctorAccValidation$fEqAccValidation$fOrdAccValidation$fShowAccValidation$fDataAccValidationbase Data.EitherEitherGHC.Base ApplicativeData.Semigroup Semigroup<*>Data.List.NonEmptyNonEmptyfmapAccValidationapAccValidationaltAccValidationfoldrAccValidationtraverseAccValidationbimapAccValidationbifoldrAccValidationbitraverseAccValidationappsAccValidationappmAccValidationemptyAccValidation_EitherVswappedAccValidation_AccValidationEitherIso_EitherAccValidationIso