anchor.diff:  methods! In fact, func􀦞ons themselves have useful methods for composi􀦞on:
   
   == Closures
  -Close over variables and functions. Everything used within the curly braces is essentially 
  +Close over variables and functions. Everything used within the curly braces is essentially
   kept alive whilst the closed over function is passed around and used by the application.
   
   === Futures and Promises
   
  -Future[T] 
  +Future[T]
   
   Callbacks always return the values
   . onComplete.
  
positive.code:   trait Monad[A] {
      def map[B](f: A => B): Monad[B]
      def flatmap[B](f: A => Monad[B]): Monad[B]
    }  
  ----
  
  == http://underscore.io/blog/posts/2015/04/23/deriving-the-free-monad.html[Free Monads]
  
  
  TIP: The free monad is just an abstract syntax tree representation of a monad. It has the advantage that we can 
  define custom interpreters for the computations represented in the free monad, and with some further tricks compose monads and interpreters
  
  Free Monad has this shape here
  
negative.code: . Every object has an identity arrow that serves as a unit under composition.
  
  === Monads
  A monad is a way to structure computations (like a design pattern) in terms of values and sequences of computations using those values.
  Monads allow the programmer to build up computations using sequential building blocks, which can themselves be
  sequences of computations. The monad determines how combined computations form a new computation and frees
  the programmer from having to code the combination manually each time it is required.
  .d
  <a href="https://wiki.haskell.org/All_About_Monads">Haskell Wiki about Monads</a>
  