packages feed

validation 0.3.2 → 0.3.3

raw patch · 3 files changed

+39/−5 lines, 3 filesdep +transformers

Dependencies added: transformers

Files

changelog view
@@ -13,3 +13,7 @@ 0.3.2  Implement Validate on Either++0.3.3++Provide Isos between (ValidationT Identity) and other data types.
src/Data/Validation.hs view
@@ -9,18 +9,22 @@   AccValidation , Validation , ValidationT(..)+, Validation'   -- * Prisms , Validate(..)   -- * Isomorphisms , isoAccValidationEither , isoValidationEither , isoAccValidationValidation+, isoValidationTEither+, isoAccValidationValidationT+, isoValidationValidationT ) where  import Control.Applicative(Applicative(..), Alternative(..), liftA2, (<$>)) import Control.Lens.Prism(Prism, prism)-import Control.Lens.Iso(Swapped(..), Iso', iso)-import Control.Lens.Review((#))+import Control.Lens.Iso(Swapped(..), Iso', iso, from)+import Control.Lens.Review(( # )) import Control.Monad(Monad(..)) import Data.Bifoldable(Bifoldable(..)) import Data.Bifunctor(Bifunctor(..))@@ -34,6 +38,7 @@ import Data.Functor.Alt(Alt(..)) import Data.Functor.Apply(Apply(..)) import Data.Functor.Bind(Bind(..), liftF2)+import Data.Functor.Identity(Identity(..)) import Data.Monoid(Monoid(..)) import Data.Ord(Ord) import Data.Semigroup(Semigroup(..))@@ -270,6 +275,9 @@     runValidationT :: m (Validation err a)   } +type Validation' err a =+  ValidationT Identity err a+ instance Functor m => Functor (ValidationT m err) where   fmap f (ValidationT k) =     ValidationT (fmap (fmap f) k)@@ -391,8 +399,8 @@ instance Functor f => Swapped (ValidationT f) where   swapped =     iso-      (\(ValidationT x) -> ValidationT (fmap (swapped #) x))-      (\(ValidationT x) -> ValidationT (fmap (swapped #) x))+      (\(ValidationT x) -> ValidationT (fmap (swapped # ) x))+      (\(ValidationT x) -> ValidationT (fmap (swapped # ) x))  isoAccValidationEither ::   Iso' (AccValidation e a) (Either e a)@@ -426,3 +434,24 @@     (\v -> case v of              Failure e -> AccFailure e              Success a -> AccSuccess a)++isoValidationTEither ::+  Iso' (Validation' e a) (Either e a)+isoValidationTEither =+  iso+    (\(ValidationT v) -> case runIdentity v of+                           Failure e -> Left e+                           Success a -> Right a)+    (\v -> ValidationT (Identity (case v of +              Left e -> Failure e+              Right a -> Success a)))++isoAccValidationValidationT ::+  Iso' (AccValidation e a) (Validation' e a)+isoAccValidationValidationT =+  isoAccValidationEither . from isoValidationTEither++isoValidationValidationT ::+  Iso' (Validation e a) (Validation' e a)+isoValidationValidationT =+  isoValidationEither . from isoValidationTEither
validation.cabal view
@@ -1,5 +1,5 @@ name:               validation-version:            0.3.2+version:            0.3.3 license:            BSD3 license-file:       LICENSE author:             Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ>, Nick Partridge@@ -31,6 +31,7 @@                     , semigroupoids >= 4.0                     , bifunctors >= 3.0                     , lens >= 4.0+                    , transformers >= 0.3.0.0    ghc-options:                     -Wall