anchor.diff:  (m/mlet [a (maybe/just 1)
            :when (= a 2)]
      (m/return (* a 2)))
  -;; => #<Nothing >
  +;; => #<Nothing>
   ----
   
   Any monadic type that implements `MonadZero` can be combined with guards inside `mlet` bindings. Here is an example with
  
positive.code: (m/mlet [a (maybe/just 1)
           :when (= a 2)]
     (m/return (* a 2)))
  ;; => #<Nothing >
  ----
  
  === MonadPlus
  
negative.code:           (m/bind (m/guard (= a 2))
                    (fn [_]
                      (m/return (* a 2))))))
  ;; => #<Nothing>
  ----
  
  Or, using mlet:
  