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

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

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Set Monad

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

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Vector Monad
