ファイルから1行ずつ読み込んで処理をするやり方。
(define main
(lambda (args)
(with-input-from-file (cadr args)
(lambda ()
(port-for-each print read-line)))))
この例では print してるだけだけど、代わりにここに行を処理する関数を入れてやればいい。
^o^ > type foo.txt foo bar baz ^o^ > gosh read-each-lines.scm foo.txt foo bar baz
次は行ごとのリストにする方法。
(define main
(lambda (args)
(print (call-with-input-file (cadr args) port->string-list))))
^o^ > gosh read-lines-list.scm foo.txt (foo bar baz)
最後に、ファイル全体を文字列にするには:
(define main
(lambda (args)
(print (call-with-input-file (cadr args) port->string))))
^o^ > gosh read-lines-string.scm foo.txt foo bar baz