Gauche - ファイル読み込みのサンプル

gaucheでファイルを読み込むやり方のメモ。

一行ずつ読み込んで処理する

(call-with-input-file
  "/Users/kanno/tmp/codes/a.scm"
  (lambda (in)
    (port-for-each (lambda (line)
                     ; 1行ずつ行う何かしらの処理
                     (print line))
                   (cut read-line in))))

一度に読み込んで処理する

Shiroさんより教えて頂いた。

; 1度に全部読み込んでリストにする
(use file.util :prefix file:)
(dolist [line (file:file->string-list "/Users/kanno/tmp/codes/a.scm")]
  ; 1行ずつ行う何かしらの処理
  (print line))

; dolistを使わずfor-eachでもよい
(for-each (lambda (line)
            ; 1行ずつ行う何かしらの処理
            (print line))
          (file:file->string-list "/Users/kanno/tmp/codes/a.scm"))

ちなみにリストではなく文字列そのまま受け取る場合はfile->stringというのもある。

(use file.util :prefix file:)
(file:file->string "/Users/kanno/tmp/codes/a.scm")