 
 ;; Keyword
 
+(defprotocol IKeyword) ; Marker protocol for mimics
+
 (deftype Keyword [_name]
+  IKeyword
+
   IPrintable
   (-pr-str [_]
     (str ":" _name))

  (Keyword. x))

(defn keyword? [x]
  (instance? Keyword x))

;; Symbol

(deftype Symbol [_name]
  IPrintable
  (-pr-str [_]
    _name)

  (Symbol. x))

(defn symbol? [x]
  (satisfies? ISymbol x))

;; LazySeq

