    (reduce fapply af (cons av avs))))
 
 (defn >>=
-  "Performs a Haskell-style left-associative bind.
-
-  Example:
-    (>>= (just 1) (comp just inc) (comp just inc))
-    ;=> #<Just [3]>
+  "Performs a Haskell-style left-associative
+  bind.
+
+  Let see it in action:
+
+      (>>= (just 1) (comp just inc) (comp just inc))
+      ;; => #<Just [3]>
   "
   ([mv f]
    (bind mv f))

     (binding [*context* ~ctx]
       ~@body)))

(defn get-current-context
  "Get current context or obtain it from
  the provided instance."
  ([] (get-current-context nil))

  "Apply a function f to the value inside functor's fv
  preserving the context type."
  [f fv]
  (-> (get-current-context fv)
      (p/fmap f fv)))

(defn fapply
  "Given function inside af's conext and value inside
