 (extend-type #+clj clojure.lang.LazySeq
              #+cljs cljs.core.LazySeq
   proto/Context
-  (get-context [_]
-    sequence-monad))
+  (get-context [_] sequence-monad)
+  (get-value [self] (seq self)))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Vector Monad

(extend-type #+clj clojure.lang.PersistentHashSet
             #+cljs cljs.core.PersistentHashSet
  proto/Context
  (get-context [_]
    set-monad))


(extend-type nil
  proto/Context
  (get-context [_] maybe/maybe-monad)
  (get-value [_] nil))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; (Lazy) Sequence Monad
