anchor.diff:  what is called a monad comprehension, the difference is that `for` is limited to
   sequences and `mlet` can work with arbitrary monads.
   
  -Also, since `mlet` desugars into calls to the Monad's `bind` function, its result keeps the type of the monadic values.
  +Also, since `mlet` desugars into calls to the Monad's `bind` function, its result
  +keeps the type of the monadic values.
   
   
   ==== Lazy sequences
  
positive.code: ;; => [42 2 42 4 42]
  ----
  
  Another interesting traversals include `keys` for focusing on map keys, `vals` 
  for focusing on map values, and `indexed` for focusing on index-value pairs.
  
  
  ==== Interoperability
  
  `cats.labs.lens` implement the `Focus` and `Foci` atom types, which are derived 
  atoms with either a lens or a traversal. We can focus on a subpart of the 
  structure and change it, reflecting the changes on the original atom:
  
  
  
negative.code: 
  TODO
  ////
  The writer monad comes from Haskell too. It's used for accumulating a log
  together with the values generated by computations. As with the state and
  reader monads, we don't have to explicitly thread the log manually since
  the monadic bind takes care of that. The type
  ////
  
  