anchor.diff:  
   .Summary of Clojure types and implemented protocols
   [options="header"]
  -|=============================================================
  +|================================================================================
   | Name     | Implemented protocols
  -| vector   | Functor, Applicative, Monad, MonadZero, MonadPlus
  -| hash-set | Functor, Applicative, Monad, MonadZero, MonadPlus
  -| list     | Functor, Applicative, Monad, MonadZero, MonadPlus
  -|=============================================================
  +| sequence | Semigroup, Monoid, Functor, Applicative, Monad, MonadZero, MonadPlus
  +| vector   | Semigroup, Monoid, Functor, Applicative, Monad, MonadZero, MonadPlus
  +| hash-set | Semigroup, Monoid, Functor, Applicative, Monad, MonadZero, MonadPlus
  +| hash-map | Semigroup, Monoid
  +|================================================================================
   
   
   == How to Contribute?
  
positive.code: The `maybe-state` monad combines the semantics of both State and Maybe.
  
  
  == Monad types
  
  === Maybe
  
  
negative.code: 
  TODO
  
  === Lazy sequences
  
  TODO
  
  === Vector
  
  TODO
  
  === Set
  
  TODO
  
  === Map
  
  TODO
  
  === Validation
  
  The validation type is similar to Either or Exception types but 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"}>
  ----
  
  === Complementary libraries
  
  Some monads are defined as separated package for avoiding additional
  and unnecesary dependencies to cats. Also, there are some libraries
  that build higher-level abstractions on top of what cats offers.
  
  * Channel monad: https://github.com/funcool/cats-channel
  * Higher-level validation: https://github.com/funcool/vale
  
  
  == FAQ
  