 (extend-type #+clj  clojure.lang.LazySeq
              #+cljs cljs.core.LazySeq
   proto/Functor
-  (fmap [self f] (map f self))
+  (fmap [self f]
+    (map f self))
 
   proto/Applicative
   (pure [_ v] (lazy-seq [v]))

  proto/Monad
  (bind [self f]
    (into []
          (apply concat (map f self))))

  proto/MonadZero
  (mzero [_] [])


  proto/Monad
  (bind [self f]
    (mapcat f self)))

; TODO: test & document
(extend-type #+clj clojure.lang.PersistentVector
