       s
       (recur (read-char rdr) (str s c)))))
 
-(deftype LineNumberingPushbackReader
-    [^StringPushbackReader spr ^:unsynchronized-mutable line
+(deftype IndexingPushbackReader
+    [^StringPushbackReader spr ^:unsynchronized-mutable line ^:unsynchronized-mutable column
      ^:unsynchronized-mutable line-start? ^:unsynchronized-mutable prev]
   PushbackReader
   (read-char [reader]

(defn reader-error
  [rdr & msg]
  (throw (RuntimeException. ^String (apply str msg)))
  #_ (throw (ReaderException. (get-line rdr) (apply str msg))))

(defn macro-terminating? [ch]
  (and (not= \# ch)


(defn ^PersistentVector read-delimited-list
  [delim rdr recursive?]
  (let [first-line (if (satisfies? IndexingReader rdr)
                     (get-line-number rdr))]
   (loop [a (transient [])]
     (let [ch (read-past whitespace? rdr)]
