 
 (extend-type nil
   proto/Context
-  (get-context [_]
-    maybe/maybe-monad))
+  (get-context [_] maybe/maybe-monad)
+  (get-value [_] nil))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; (Lazy) Sequence Monad

(extend-type #+clj clojure.lang.PersistentHashSet
             #+cljs cljs.core.PersistentHashSet
  proto/Context
  (get-context [_]
    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
