          (str v))])
 
   #?@(:cljs
-       [cljs.core/IEquiv
-        (-equiv [_ other]
-                (if (instance? Identity other)
-                  (= v (.-v other))
-                  false))]))
+      [cljs.core/IEquiv
+       (-equiv [_ other]
+         (if (instance? Identity other)
+           (= v (.-v other))
+           false))]))
 
 (alter-meta! #'->Identity assoc :private true)
 

  "The Identity transformer constructor."
  [inner-monad]
  (reify
    proto/Monad
    (mreturn [_ v]
      (identity (proto/mreturn inner-monad v)))

    (mbind [_ mv f]
      nil)))

(def ^{:no-doc true}
  identity-monad
  (reify
    p/Functor
    (fmap [_ f iv]
      (Identity. (f (.-v iv))))

    p/Applicative
    (pure [_ v]
      (Identity. v))

    (fapply [_ af av]
      (Identity. ((.-v af) (.-v av))))

    p/Monad
    (mreturn [_ v]
      (Identity. v))

