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

(defn >=>
  "Left-to-right composition of monads."
  [mf mg x]
  (with-monad (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-context ctx
      (p/mbind ctx mv f))))

(defn mzero
