   "The Either transformer constructor."
   [inner-monad]
   (reify
-    proto/Monad
+    p/Monad
     (mreturn [_ v]
-      (proto/mreturn inner-monad (right v)))
+      (p/mreturn inner-monad (right v)))
 
     (mbind [_ mv f]
-      (proto/mbind inner-monad
-                   mv
-                   (fn [either-v]
-                     (if (left? either-v)
-                       (proto/mreturn inner-monad either-v)
-                       (f (proto/extract either-v))))))
-
-    proto/MonadTrans
+      (p/mbind inner-monad
+               mv
+               (fn [either-v]
+                 (if (left? either-v)
+                   (p/mreturn inner-monad either-v)
+                   (f (p/extract either-v))))))
+
+    p/MonadTrans
     (base [_]
       either-monad)
 

      (either/left 1)
      ;; => #<Left [1]>
  "
  (:require [cats.protocols :as proto]))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Type constructor and functions

        (f (.-v s))
        s))

    p/Foldable
    (foldl [_ f z mv]
      (if (right? mv)
        (f z (p/extract mv))
        z))

    (foldr [_ f z mv]
      (if (right? mv)
        (f (p/extract mv) z)
        z))))


