In article <471003CB.7060701 / airemix.com>,
  "NARUSE, Yui" <naruse / airemix.com> writes:

> バイナリを ASCII から分離しなくとも、Ruby の \x00-\x7F は原則 ASCII とい
> う前提が既に存在するわけで、陽に記述しなくとも「それ」が ASCII であるこ
> とは Ruby のプログラムである時点で暗に記述されていると考えます。

あぁ、それはたしかに。

> 現在の Ruby の実装についてならば、 image がバイナリとすれば、という仮定
> は image を UTF-8 なり Shift_JIS なりにすればエミュレートできますよね、
> 動きます。
> 文字列とバイト列を別物とした世界ならば動かないとは思いますが、「ASCII と
> BINARY の分離」は「文字列とバイナリの分離」とは別物ではないでしょうか。

えぇと、混乱したのですが、おそらく私が後者について述べている
と考えられたのですね? そう想定して書きますが私は文字列とバイ
ナリを異なるクラスにすることは考えていません。

私が述べているのはエンコーディングとして ASCII-8BIT とは別に
BINARY を導入したとして、image が String のインスタンスで
image.encoding が "BINARY" を返す状況下で、/\AGIF/ =~ image
が動かないだろうという話です。

image.encoding が "UTF-8" であるときに動くのは UTF-8 が
ASCII 互換だからです。私は BINARY は ASCII 互換でないと想定
しているので動かないことになります。

なお、ASCII 互換というのは内部的には rb_enc_asciicompat で検
査されます。いまその実装を眺めたところ... うぅむ、
rb_enc_mbminlen(enc)==1 という実装はなんか UTF-16 しか想定し
てなくて、EBCDIC は考えてなさそうですねぇ。まぁ、BINARY の導
入に伴って実装は変更され、BINARY についても偽を返すようにな
ると想定してください。

> 田中さんの主張は、ASCII はバイナリの部分集合であるというものだと思うので
> すが、Ruby M17N において ASCII は全ての String 加算・マッチング系の部分
> 集合となっています。田中さんが ASCII とバイナリについて展開した論理は、
> ASCII と UTF-8 でも、ASCII と Shift_JIS とでも展開できるのではないでしょ
> うか。図にすると以下のような感じですよね。

ASCII 互換でないものについては異なります。

ASCII 互換なバイナリというのはまさに ASCII-8BIT で、成瀬さん
が想定しているものはそれだと思います。私が考えているのは
ASCII-8BIT とは異なる純粋なバイナリというものの利点・欠点で
す。
-- 
[田中 哲][たなか あきら][Tanaka Akira]