anchor.diff:  Monads are the most discussed programming concept to come from category theory. Like functors and
   applicatives, monads deal with data in contexts.
   
  -Additionaly, monads can also transform contexts by unwrapping data, applying functions to it and
  +Additionally, monads can also transform contexts by unwrapping data, applying functions to it and
   putting new values in a completely different context.
   
   The monad abstraction consists of two functions: *bind* and *return*
  
positive.code: ;; => #<Nothing >
  ----
  
  Moreover, the applicative functor comes with *pure* function, and the main purpose of this function is
  to put some value in side-effect-free context of the current type.
  
  Examples:
  
  
negative.code: the composition ourselves.
  
  In some circumstances we would like combine the effects of two monads into another one. We call the
  resulting monad a monad transformer, which is the composition of a "base" and "inner" monad. A
  monad transformer is itself a monad.
  
  
  