 (defn >=>
   "Left-to-right composition of monads."
   [mf mg x]
-  (with-monad (get-current-context mf)
+  (with-context (get-current-context mf)
     (mlet [a (mf x)
            b (mg a)]
           (return b))))

  compose operations with `bind` function."
  [mv f]
  (let [ctx (get-current-context mv)]
    (with-monad ctx
      (p/mbind ctx mv f))))

(defn mzero

      ;=> <Nothing>
  "
  [p mv]
  (with-context (get-current-context mv)
    (mlet [v mv
           :when (p v)]
          (return v))))
