anchor.diff:  
   @f
   ;; => NullPointerException   clojure.lang.Numbers.ops (Numbers.java:961)
  -----
  -
  -
  -=== Validation
  -
  -The validation type is similar to the Either or Exception types except that it
  -doesn't implement a Monad instance. It has two constructors: `ok` and `fail`,
  -representing success and failure respectively.
  -
  -[source, clojure]
  -----
  -(require '[cats.applicative.validation :as v])
  -(require '[cats.core :as m])
  -
  -(v/ok 42)
  -;; => #<Ok 42>
  -
  -(v/fail [])
  -;; => #<Fail []>
  -----
  -
  -It implements the Applicative protocol, and its intended usage is as an
  -Applicative. Applying Validation values together errs on the side of the failure,
  -and applying failures together aggregates their values using the Semigroup's
  -`mappend` function.
  -
  -[source, clojure]
  -----
  -(require '[cats.applicative.validation :as v])
  -(require '[cats.core :as m])
  -
  -(m/fapply (v/ok 42) (v/fail "OH NOES"))
  -;; => #<Fail "OH NOES">
  -
  -;; Note that `<*>` is a variadic fapply
  -(m/<*> (v/ok 42)
  -       (v/fail {:foo "bar"})
  -       (v/fail {:baz "fubar"})
  -       (v/ok 99))
  -;; => #<Fail {:baz "fubar", :foo "bar"}>
   ----
   
   
  
positive.code: 
  * The existing libraries do not have support for ClojureScript.
  * We do not intend to write a little Haskell inside Clojure. We have adopted a
    practical and Clojure like approach, always with correctness in mind.
  * We do not like viral/copyleft like licenses and in contrast to other libraries
    cats is licensed under the BSD (2 clauses) license.
  * We do not intend to only implement monads. Other category theory and algebraic
    abstractions are also first class in cats.
  
  
  *Alternatives:*
  
  * **algo.monads**: This is the official Clojure library for monads. Its approach
    for modeling monads is slightly limited, only supports the monad abstraction and
    does not have support for ClojureScript.
  * **fluokitten**: Slightly unmaintaned by the original author. It is focused on
    being very practical without taking care of correctness (for example, it extends
    Clojure types with monadic abstractions that do not make sense). It has no
    support for ClojureScript either.
  * **monads**: Is the most advanced monads library, supports also functors,
    applicatives and other related abstractions. It lacks a good and readable
    documentation, focus on correctness, has Haskell like sugar syntax (instead of
    Clojure like syntax) and does not have support for ClojureScript.
  
  All listed alternatives are licensed with EPL or similar licenses.
  
  
  == Project Maturity
  
  _cats_ already reached the 1.0.0 version and the link:api/index.html#id[API] is
   settled.
  
  
  == Install
  
  The simplest way to use _cats_ in a Clojure project is by including
  
negative.code: (ctx/with-context maybe/context
    (m/traverse just-if-even [2 3]))
  ;; => #<Nothing>
  ----
  
  
  