anchor.diff:  
   Category Theory abstractions for Clojure.
   
  +
   === Why another library?
   
   Because the cats library:
  
positive.code: 
  === Maybe
  
  This is one of the two most used monad types (also named Optional in other programming
  languages).
  
  Maybe/Optional is a polymorphic type that represents encapsulation of an optional value; e.g. it is
  used as the return type of functions which may or may not return a meaningful value when they
  are applied. It consists of either an empty constructor (called None or Nothing), or a constructor
  encapsulating the original data type A (written Just A or Some A).
  
  _cats_, implements two constructors:
  
  - `(just v)`: represents just a value in a context.
  - `(nothing)`: represents a failure or null.
  
  .Usage example of *Maybe* constructors.
  [source, clojure]
  ----
  (require '[cats.monad.maybe :refer :all])
  (just 1)
  ;; => #<Just [1]>
  (nothing)
  ;; => #<Nothing >
  ----
  
  
  === Either
  
negative.code: ----
  (require '[cats.monad.maybe :as maybe])
  
  (maybe/just 2)
  ;; => #<Just [2]>
  ----
  
  The `just` function is a constructor of Just type that is part of Maybe monad.
  
  Let's see one example using *fmap* over *just* instance:
  
  .Example using fmap over *just* instance.
  [source, clojure]
  ----
  (require '[cats.core :as m])
  
  (m/fmap inc (maybe/just 1))
  ;; => #<Just [2]>
  ----
  
  The *Maybe* type also has another constructor: `nothing`. It represents the absence of a value.
  