validation-selective: Lighweight pure data validation based on Applicative and Selective functors

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain] [Publish]

Lighweight pure data validation based on Applicative and Selective functors. The library builds validation interface around the following data type:

data Validation e a
    = Failure e
    | Success a

[Skip to Readme]

Properties

Versions 0.0.0.0, 0.0.0.0, 0.1.0.0, 0.1.0.1, 0.1.0.2, 0.2.0.0
Change log CHANGELOG.md
Dependencies base (>=4.11.1.0 && <4.14), deepseq (>=1.4.3.0 && <1.5), selective (>=0.3 && <0.5) [details]
License MPL-2.0
Copyright 2020 Kowainik
Author Dmitrii Kovanikov, Veronika Romashkina
Maintainer Kowainik <xrom.xkov@gmail.com>
Category Validation, Selective, Data
Home page https://github.com/kowainik/validation-selective
Bug tracker https://github.com/kowainik/validation-selective/issues
Source repo head: git clone https://github.com/kowainik/validation-selective.git
Uploaded by shersh at 2020-03-17T14:22:35Z

Modules

[Index] [Quick Jump]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


Readme for validation-selective-0.0.0.0

[back to package description]

validation-selective

Logo GitHub CI Build status Windows build status

Hackage Stackage Lts Stackage Nightly MPL-2.0 license

Lightweight pure data validation based on Applicative and Selective functors.

validation-selective is built around the following data type:

data Validation e a
    = Failure e
    | Success a

This data type is similar to Either but allows accumulating all errors instead of short-circuiting on the first one.

For more examples and library tutorial, refer to Haddock:

Comparison with other packages

validation-selective is not the only package that provides such Validation data type. However, unlike other packages, it has some noticeable advantages:

The below section provides per-package comparison with the most popular validation packages in the Haskell ecosystem:

How to use

validation-selective is compatible with the latest GHC compiler versions starting from 8.4.4.

In order to start using validation-selective in your project, you will need to set it up with the three easy steps:

  1. Add the dependency on validation-selective in your project's .cabal file. For this, you should modify the build-depends section by adding the name of this library. After the adjustment, this section could look like this:

    build-depends: base ^>= 4.14
                 , validation-selective ^>= 0.0
    
  2. In the module where you wish to implement pure data validation, you should add the import:

    import Validation (Validation (..))
    
  3. Now you can use the types and functions from the library:

    main :: IO ()
    main = print [Failure "wrong", Success 42]
    

Usage with Stack

If validation-selective is not available on your current Stackage resolver yet, fear not! You can still use it from Hackage by adding the following to the extra-deps section of your stack.yaml file:

extra-deps:
  - validation-selective-0.0.0.0