(use text.csv)
(use gauche.charconv)

(let ((file-name "../../data/43kumamo/43kumamo.csv"))
  (length
   (call-with-input-file file-name
     (cut port->list (make-csv-reader #\,) <>)
     :encoding 'shift_jis)))

; -> 1874


(let ((file-name "../../data/43kumamo/43kumamo.csv"))
  (length
   (call-with-input-file file-name
     (lambda (in)
       (port->list (make-csv-reader #\,) in))
     :encoding 'shift_jis)))

; -> 1874


(let ((file-name "../../data/43kumamo/43kumamo.csv")
      (reader (make-csv-reader #\,)))
  (length
   (call-with-input-file file-name
     (lambda (in)
       (port->list reader in)) :encoding 'shift_jis)))

; -> 1874


(let ((file-name "../../data/43kumamo/43kumamo.csv")
      (reader (make-csv-reader #\,)))
  (let/cc skip
    (call-with-input-file file-name
      (lambda (in)
        (port-for-each (lambda (fields)
                         (skip fields))
                       (lambda ()
                         (reader in)))) :encoding 'shift_jis)))

; -> ("43201" "862  " "8610000" "クマモトケン" "クマモトシ" "イカニケイサイガナイバアイ" "熊本県" "熊本市" "以下に掲載がない場合" "0" "0" "0" "0" "0" "0")



(call-with-input-string "\"aaa\",\"b
bb\",\"ccc\",zzz,\"y\"\"Y\"\"y\",xxx" (make-csv-reader #\,))

; -> ("aaa" "b\nbb" "ccc" "zzz" "y\"Y\"y" "xxx")