                 results)
             (rf results (apply struct (apply create-struct @hdr) input)))))))))
 
+;; Here's an example of structify:
+;;
+;;     => (with-open [in-file (io/reader "test/test.csv")]
+;;          (transduce
+;;            (structify)
+;;            conj
+;;            []
+;;            (csv/parse-csv in-file))
+;;
+;;     ({:this "# some comment lines..."}
+;;      {:this "1", :that "2", :more "stuff"}
+;;      {:this "2", :that "3", :more "other yeah"})
+;;
+;; <br/>
+;;
+;; Note that `"# some comment lines..."` was really intended to be left out as a comment.
+;; We can address this with the following function:
+
+
+;; <br/>
+;; ## remove-comments
 (defn remove-comments
   "Removes rows which start with a comment character (by default, `#`). Operates by checking whether
   the first item of every row in the collection matches a comment pattern. Also removes empty lines.

  (let [rest-options (dissoc opts :parser-opts)]
    (with-open [in-file (io/reader csv-filename)]
       (impl/apply-kwargs parse-and-process in-file opts))))

    (transduce (process rest-options) conj []
     (impl/apply-kwargs csv/parse-csv csv-readable parser-opts))))

;;     (with-open [in-file (io/reader "test/test.csv")]
;;         (parse-and-process in-file
;;                            :cast-fns {:this #(Integer/parseInt %)}))


;; <br/>
;; ## slurp-csv

(defn slurp-csv
  "This convenience function let's you `parse-and-process` csv data given a csv filename. Note that it is _not_
  lazy, and must read in all data so the file handle can be closed."
