     (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."

            (if (and x (commented? x))
              results
              (rf results input)))))))))

(defn cast-with
  "Casts the vals of each row according to `cast-fns`, which must either be a map of

  ([]
   (process {})))

;; Using this function, the code we've been building above is reduced to the following:
;;
;;     (with-open [in-file (io/reader "test/test.csv")]
;;       (transduce
;;         (process {:cast-fns {:this #(Integer/parseInt %)}})
;;         conj
;;         []
;;         (csv/parse-csv in-file)))


;; <br/>
;; ## parse-and-process

(defn parse-and-process
  "This is a convenience function for reading a csv file using `clojure/data.csv` and passing it through `process`
  with the given set of options (specified _last_ as kw_args, in contrast with our other processing functions).
