ポートの仕様を読む - Scheme VM を書く
VM がそろそろ標準出力にあれこれ出力をはじめたので仕様の把握をしよう。
R6RSライブラリのポートの所を一通り読んだ。
実装者として見るポイントは
- ソースを共有したポートはお互いに副作用があっても良い
- コーデックは Unicode のエンコード/デコード の方法を定義したもの
- ユーザーが用意するものでない
- コード変換器はコーデックと行末形式とデコーディングエラーを組み合わせたもの
- ユーザーが作るが組み合わせの数は少ない
- コード変換器は変換の状態を保持する
- バイナリポートはコード変換器とは結びつかない
- テキストポートはコード変換器と結びつくこともある
- (make-custom-binary-input-port id read! get-position set-position! close) でカスタムポートも作成できる
- 引数 read! は手続きか Scheme の世界でうまいことできないかな?
- Bytevectors の仕様も読まないと