Racket には素晴らしいread-bytes-async!
関数があり、これは世界中の他のすべてのプログラミング言語に存在すると私は信じています。ブロックせずに、入力ストリームから可能なものをバッファーに読み取り、書き込まれたバイト数を返します。
この機能は、たとえば Unix ツールを効率的に実装するために絶対に必要な機能のように思えcat
ますが、Chicken Scheme にはそのような機能が欠けているようです。もちろん、 と を使用できます(read-byte)
が(write-byte)
、これは遅く、CPU をすべて使い果たします。
その(copy-port)
ような実装はないようです。代わりに、ストリームが閉じられる前に、バッファーがいっぱいになった場合にのみ、データがバッファーごとにコピーされます。これは、(copy-port (current-input-port) (current-output-port))
がまったく動作しないことを意味cat
します。
ドキュメンテーションを読む際の恐ろしい盲点に苦しんでいるだけですか、それとも Chicken には驚くほどそのような機能が実際に欠けているのでしょうか? cat
Chickenで効率的に書くことさえできないのですか?