SchemeではファイルへのIOをファイル記述子を直接扱うのではなくポートというもので扱う。 ポートは入力や出力を行うためのもの。

https://www.gnu.org/software/guile/manual/html_node/Ports.html

ファイルに書き込み

ファイルを作成して文字列をファイルに書き込む。 open-output-file関数を用いてファイルを新規作成し display関数を用いてファイルに書き込む。 最後にclose-file関数でポートを閉じる。

(let ((p (open-output-file "foo.txt")))
  (display "Hello, world!\n" p)
  (close-port p))

foo.txtというファイルが新しく作成され、次のような中身になる。

Hello, world!
foo.txtの中身

ファイルの読み込み

先程作成したfoo.txtを読み込むにはopen-input-file関数を用いる。 今回はテキストの読み込みなのでtextual-ports::get-string-all関数を用いる。

(let ((foo (open-input-file "foo.txt")))
   (get-string-all foo)
   (close-port foo))

これによりfoo.txtの内容を読むことができる。