name: validation version: 0.5.0 license: BSD3 license-file: LICENSE author: Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ> , Nick Partridge maintainer: Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ> , Nick Partridge copyright: Copyright (C) 2014,2015 NICTA Limited synopsis: A data-type like Either but with an accumulating Applicative category: Data description: <> . Several data-types like Either but with differing properties and type-class instances. . Library support is provided for those different representations, include `lens`-related functions for converting between each and abstracting over their similarities. . * `AccValidation` . The `AccValidation` data type is isomorphic to `Either`, but has an instance of `Applicative` that accumulates on the error side. That is to say, if two (or more) errors are encountered, they are appended using a `Semigroup` operation. . As a consequence of this `Applicative` instance, there is no corresponding `Bind` or `Monad` instance. `AccValidation` is an example of, "An applicative functor that is not a monad." . * `Validation` . The `Validation` data type is isomorphic to `Either` and has a `Monad` instance that does the same as `Either`. The only difference to `Either` is the constructor names and surrounding library support. . * `ValidationT` . The `ValidationT` data type is the monad transformer for `Validation`. An instance of `MonadTrans` is provided for `(ValidationT err)`. Due to the arrangement of the `ValidationT` type constructor, which permits a `MonadTrans instance, there is no possible `Bifunctor` instance. Consequently, the `ValidationB` data type provides a `Bifunctor` instance (but not a `MonadTrans` instance). Library support is provided to exploit the isomorphism to `ValidationB`. . Note that since `AccValidation` is not a monad, there is also no corresponding monad transformer for this data type. . * `ValidationB` . The `ValidationB` data type is similar to the monad transformer for `Validation` (`ValidationT`), however, due to the arrangement of the `ValidationB` type constructor, which permits a `Bifunctor` instance, there is no possible `MonadTrans` instance. Consequently, the `ValidationT` data type provides a `MonadTrans` instance (but not a `Bifunctor` instance). Library support is provided to exploit the isomorphism to `ValidationT`. homepage: https://github.com/NICTA/validation bug-reports: https://github.com/NICTA/validation/issues cabal-version: >= 1.10 build-type: Custom extra-source-files: changelog source-repository head type: git location: git@github.com:NICTA/validation.git flag small_base description: Choose the new, split-up base package. library default-language: Haskell2010 build-depends: base >= 3 && < 5 , mtl >= 2.0 && < 2.3 , semigroups >= 0.8 , semigroupoids >= 4.0 , bifunctors >= 3.0 , lens >= 4.0 && < 5 , transformers >= 0.3 && < 0.5 ghc-options: -Wall default-extensions: NoImplicitPrelude hs-source-dirs: src exposed-modules: Data.Validation test-suite doctests type: exitcode-stdio-1.0 main-is: doctests.hs default-language: Haskell2010 build-depends: base < 5 && >= 3 , doctest >= 0.9.7 , filepath >= 1.3 , directory >= 1.1 , QuickCheck >= 2.0 , template-haskell >= 2.8 ghc-options: -Wall -threaded hs-source-dirs: test