[binary-*] (Re: binary-start-process)

守岡 知彦 / MORIOKA Tomohiko tomo @ kanji.zinbun.kyoto-u.ac.jp
2000年 12月 25日 (月) 14:47:02 JST


>>>>> In [emacs-mime-ja : No.00768] 
>>>>>	"Daiki" = Daiki Ueno <ueno @ bug.org> wrote:

;; binary-* と『言語』を分けて議論させてください。とりあえず、この記事
;; では binary-* 関連に限定して述べます。


守岡> また、敢えて、binary-* のような専用の関数を設けることの利点を述
守岡> べるなら、将来、入出力での変換の制御のためのより良い汎用の機構が
守岡> できた時にも容易に実装できそうだという可能性が高そうだということ
守岡> もあると思います。let で囲む方法ではこの点が困難だと思います。ま
守岡> あ、そんな将来のことなんて知ったことではないとは思いますが。

Daiki> ううむ。個人的にはまったく逆の立場で、dynamic binding のほうが
Daiki> まだ、移行は簡単ではないかという感想を抱いているのですが、専用
Daiki> の関数を設けることで移行の手間が減少する例を挙げて頂けないでしょ
Daiki> うか。

dynamic binding というのは let で coding-system-for-{read|write} を束
縛する方法でしょうか?それとも as-binary-* みたいなのも含めてでしょう
か?

pces では、let で特定の変数を囲む代わりに、専用の関数・macro を設けて
可搬性を実現していますが、これは1つの解だと思っています。

また、個人的には、命名規則が組織的に構成されていれば関数名が多くても構
わないのではないかという気もしないではないのですが(例えば、可能なら関
数を組織的に合成するような実装をすれば、そんなに大変じゃないかも)、と
はいうものの、維持するのにコストがかかるのも確かだと思います。また、
APEL との兼ね合いで考えれば、pces と同種のものを FLIM で維持するのはば
かばかしいとも考えられます。

直接的に FLIM で必要なのは、Content-Transfer-Encoding としての "7bit",
"8bit", "binary" であり、text 入出力における coding-system での変換を
抑制するための機能ではないと考えられます。そこで、mime- 汎用や 
"base64" 用などと同様の "7bit", "8bit", "binary", "binary" 用符号・復
号ファイル入出力関数を用意してみました。また、smtpmail.el 実装上の便宜
のために、同種の例外的関数として binary-find-file-noselect を設けてみ
ましたが、これは API としない方が良いかもしれません。

また、process に対する binary 入出力のために専用の関数群を設けず、
binary-funcall と binary-to-text-funcall を設けてみました。これは用法
的には as-binary-* に似たものになりますが、macro ではなく関数とします。
現状では、dynamic binding で実装していますが、仮に dynamic binding で
ない環境で使うとしても、引数で取る関数を対応する関数で置き換えるような
実装が可能になるのではないかと思っています。

これに伴い、raw-io.el は廃止してみました。


Daiki> 僕は、界面というものは、あるライブラリについて必ずしも唯一とは
Daiki> 限らないと考えています。例えば、同期/非同期などの特定の 
Daiki> semantics、特定の実装法、粒度、等の様々な面で切ったものこそが界
Daiki> 面 (まさにその名前のまま) ではあり、その場合、界面の一貫性とは
Daiki> 単に切断面の選びかたに過ぎないのではないかと。

これは全く同感です。

Daiki> その意味で、(きっと冗談でしょうが) 守岡さんの仰る 
Daiki> binary-funcall などを用意するというのも一つの方法なのではないか
Daiki> と考えます。例えば Java では、特定のコンテナに対し同期的なアク
Daiki> セスを保証する(型に変換する)ために、
Daiki> Collections.synchronizedList (new ArrayList (...)) などという界
Daiki> 面を用意しています。

実は本気だったのです。

というわけで、とりあえず、この方面でやってみました。

-- 
===『幾千億の分子に分かれても ========================================
     決して忘れない。    
     この宇宙が終るまで』              守岡 知彦 (MORIOKA Tomohiko)
====================== Email: <tomo @ kanji.zinbun.kyoto-u.ac.jp> ======




More information about the Emacs-mime-ja mailing list