   IEquiv
   (-equiv [_ other]
     (cond
-      (instance? Keyword other)
+      (keyword? other)
       (= (name _) (name other))
       :else false))
   


;; Keyword

(deftype Keyword [_name]
  IPrintable
  (-pr-str [_]
    (str ":" _name))

  (Keyword. x))

(defn keyword? [x]
  (satisfies? IKeyword x))

;; Symbol

(defprotocol ISymbol) ; Marker protocol for mimics

(deftype Symbol [_name]
  ISymbol

  IPrintable
  (-pr-str [_]
    _name)
