R6RS:翻訳:Rationale:Bytevectors

R6RS:翻訳:Rationale:Bytevectors

14 章 バイトベクタ

バイトベクタは SRFI 74 [32] に基いたバイナリデータの表現である。これを R6RS に含めることにしたもともとの動機はバイナリ入出力を可能にするためである。バイトベクタ中の位置は常に特定のバイトかオクテットを参照している。とはいうものの、 (rnrn bytevectors (6)) ライブラリでは、様々なビット幅の符号付き・符号なし整数、 IEEE 浮動小数点表現、テキストエンコーディングのような、様々なバイト幅の形式でのバイナリデータへのアクセス法を提供している。これは、バイナリデータを数値の一様なベクタとして表現するのとは著しく異なっている。入出力に関連した環境では、アプリケーションは単一のバイナリの固まりから異なる種類の実体にアクセスする必要があることが多い。単一のデータ型に対するこれらの操作を提供することは、プログラミング上の作業とライブラリの大きさを大きく減少させる。

バイトベクタは box されていない数値オブジェクトの並びをエンコードするのにも使うことができる。このような目的のためにバイトベクタを使うことは aliasing をもたらすことになるかもしれず、コンパイラの最適化の効果を減少させる可能性がある。しかしそれでも、構造体の凍結と透明性をバイトベクタとともに用いれば、高速でメモリ効率のよい一様な数値データ型の配列を提供する新しいデータ型を可搬性のある実装として構築することも可能になるのである。

More ...