 (defn- re-matches*
   [re s]
   (let [matches (.exec re s)]
-    (when (and (coercive-not= matches nil)
+    (when (and (not (nil? matches))
                (identical? (aget matches 0) s))
       (if (== (alength matches) 1)
         (aget matches 0)

  [s]
  (let [groups (re-find* int-pattern s)
        group3 (aget groups 2)]
    (if (coercive-not
         (or (nil? group3)
             (< (alength group3) 1)))
      0
      (let [negate (if (identical? "-" (aget groups 1)) -1 1)
            a (cond

  (throw (js/Error. (apply str msg))))

(defn ^boolean macro-terminating? [ch]
  (and (not (identical? ch "#"))
       (not (identical? ch \'))
       (not (identical? ch ":"))
       (macros ch)))

(defn read-token
