    (re-matches* float-pattern s) (match-float s)))
 
 (defn escape-char-map [c]
-  (case c
-    \t "\t"
-    \r "\r"
-    \n "\n"
-    \\ \\
-    \" \"
-    \b "\b"
-    \f "\f"
-    nil))
+  (cond
+   (identical? c \t) "\t"
+   (identical? c \r) "\r"
+   (identical? c \n) "\n"
+   (identical? c \\) \\
+   (identical? c \") \"
+   (identical? c \b) "\b"
+   (identical? c \f) "\f"
+   :else nil))
 
 (defn read-unicode-char
   [reader initch]

    (if (gstring/contains token "/")
      (symbol (subs token 0 (.indexOf token "/"))
              (subs token (inc (.indexOf token "/")) (.-length token)))
      (get special-symbols token (symbol token)))))

(defn read-keyword
  [reader initch]

     (identical? \" ch) (. buffer (toString))
     :default (recur (do (.append buffer ch) buffer) (read-char reader)))))

(defn special-symbols [t not-found]
  (cond
   (identical? t "nil") nil
   (identical? t "true") true
   (identical? t "false") false
   :else not-found))

(defn read-symbol
  [reader initch]
