<      2016 Mark Karpov BSD 3 clause(Mark Karpov <markkarpov@openmailbox.org> experimentalportableSafe%&  m e a( is a checker that checks value of type a, can perform the check in m monad, returning e message when check fails. is a   and K  this is how you combine different checkers and build more complex ones. m e a+ is a validator that checks values of type a , works in m monad, and can return e messages on failure. m a. is a normalizer that works on values of type a in monad m.Create a normalizing . Every normalizer has a priority  the bigger the number, the later the normalizer runs. Every normalizer you use should have a unique priority number. The same as 9, but allows to perform normalization inside of a monad.Create a validating . Every validator has a priority  the bigger the number, the later the validation step runs. Every validator you use should have a unique priority number. The same as 9, but allows to perform normalization inside of a monad.Run a ^ on given value. This is version for cases when all transformations and validations are pure. Version of 7 that can run transformations and checks in any monad.PriorityNormalizing transformation Normalizing PriorityNormalizing transformation Normalizing Priority if everything is OK Validating Priority if everything is OK Validating The  to runValue to checkResult,  on success,  on failureThe  to runValue to checkResult,  on success,  on failure       &data-check-0.1.0-pr3mOlmRtxI7VNkWeNsFS Data.CheckChecker normalizer normalizerM validator validatorM runChecker runCheckerM$fMonoidChecker$fSemigroupChecker$fOrdValidator $fEqValidator$fOrdNormalizer$fEqNormalizerbaseData.Semigroup SemigroupGHC.BaseMonoid Validator NormalizerNothing Data.EitherRightLeft