anchor.diff:                      (m/return (* a b))))))
   ----
   
  -This makes a lot more natural to write code that uses monads.
  +That makes a lot more natural to write code that uses monads and gives a very
  +familiar `let` like syntax abstraction that makes the clojure code that uses
  +monads less "strange".
  +
  +If you are coming from Haskell, mlet is mostly analogous to the *do notation*.
   
   Since the bindings in the mlet macro run the monadic effects of the right-hand
   values we cannot just put any value in there and expect to be bound to its
  
positive.code:    (m/return (* a 2)))
  ;; => [2 6]
  ----
  
  === alet
  
  
negative.code: 
  == Syntax sugar
  
  Additionally to the abstractions and types, *cats* exposes some powerfull
  syntax abstractions that surelly will make the usage of that abstractions
  in a more familiar way.
  
  
  === mlet
  
  The `mlet` syntactic abstraction intends to facilitate the composition
  of monadic operations.
  
  If you've followed along with the documentation you've seen many examples
  of its usage already, let's see what can `mlet` do. First of all, mlet turns
  this let-like bindings:
  
  [source, clojure]
  ----
  