 ;; Monad transformer definition
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
-(defn identity-transformer [inner-monad]
+(defn identity-transformer
+  "The Identity transformer constructor."
+  [inner-monad]
   (reify
     proto/Monad
     (mreturn [_ v]
       (identity (proto/mreturn inner-monad v)))
 
     (mbind [_ mv f]
-      nil)
-
-))
+      nil)))

(alter-meta! #'->Identity assoc :private true)

(defn identity
  "Default constructor for identity type."
  [v]
  (Identity. v))


;; Monad definition
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(def ^{:no-doc true}
  identity-monad
  (reify
    proto/Functor
    (fmap [_ f iv]
