R6RS:翻訳:Standard Libraries:8.2.3 Buffer modes

R6RS:翻訳:Standard Libraries:8.2.3 Buffer modes

8.2.3 バッファモード

各ポートには対応するバッファモードが存在する。出力ポートでは、バッファモードにより出力ポートに対応づけられたバッファがいつフラッシュされるのかが定義される。入力ポートでは、どれだけの量のデータが読み込み操作を満足するまでに読み込まれるのかを定義する。可能なバッファモードはシンボルで、 none はバッファリングを行わず、 line は行末でフラッシュを行ない、読み込みを行末まで行うか、その他の実装系依存の振舞いをし、 block は任意のバッファリングである。本節では buffer-mode という引き数の仮引き数名はバッファモードシンボルでなければならない。

ポートふたつが同一の変更可能なソースに接続されている場合、ポートは両方ともバッファリングされず、 1 バイトないし 1 文字ふたつのポートの一方から読み込むと、もう一方のポートからは複数のバイトないし文字列変化したように見える。一方のポートの先読み操作によりもう一方からはアクセスできないバイトや文字を確認することができるが、確認を行なったポートでは後続する読み込み操作では確認したバイトないし文字列がバッファされていないように見える。

言い換えると、バッファリングの意味論は共有された変更可能なソースへの副作用として定義され、先読み操作は読み込み操作と同様の副作用を持つということである。

[syntax] (buffer-mode <buffer-mode symbol>)

<buffer-mode symbol> は none、 line、 block のいずれかの名前のシンボルでなければならない。戻り値は対応するシンボルであり、対応するバッファモードを指定する。

: <buffer-mode symbol> では名前だけに意味がある。

[procedure] (buffer-mode? obj)

引き数が有効なバッファモードシンボルであれば #t を返し、そうでなければ #f を返す。


Last modified : 2009/02/10 06:04:15 UTC