Jumpei Arakawa
araka****@infoc*****
2005年 11月 2日 (水) 01:54:11 JST
荒川です。 プリミティブが必要なかったっけかなあ、という疑問ですが、 いろいろと思い返していたら、必要だったということを思い出しました。 どこで必要かというと、抽出則です。 インデックスアクセスに「オブジェクト 整数プリミティブ」というのを使っています。 回避策としては整数オブジェクトはメタ結合不可にしてしまって、 「オブジェクト 整数オブジェクト」で代替するというのもありですが、 個人的には整数オブジェクトに関数とかを追加したりして使うのも楽しいと思うのです。 例えば、ある関数hoge-checkerでは、オブジェクトにhogeというメソッドが定義されていないと 例外を投げて、本処理を続行しないようにしているとします。ここで、普通の整数を処理させたい (本処理で必要な機能は整数オブジェクトで十分で、新しくラッパーを作るのが面倒な)場合、 hoge-checker [ 5 <+ {| hoge = { ... } |} ] ; みたいなことができると嬉しいような気がします。 (例えばある条件を満たしたデータだけを格納するようなコレクションとか) かといって、じゃあ整数プリミティブはそのままかというと、上の例から分かるように、 こういうことをしようとすると、整数はオブジェクト、と考える方が自然です。 で、思うに、横着せずにインデクサを用意するべきなんじゃないかなと思います。 そもそも、 array 1 array 2 とかならまだしも array i array j って変数名が複雑になってくると結構視認しにくいのでは思うのです。 前は.elemとかを使おうかという話で、きもいという結論だった気がするのですが、 #なんつーのを演算子として使ってみてはいかがでしょうか? array#1 array#2 とか array#i array#j 個人的には悪くないかなーと思うんですが、池田君的にはどうですか? (ないし超頑張ってarray[i]を使えるようにするかw) あ、 array#[1] array#[2] とか array#[i] array#[j] とかのほうがいいかも。そうすりゃ array#[i, j, k] みたいなのも作れるし。どうかなあ?