[Gauche-devel-jp] Re: [Q] gauche.array

アーカイブの一覧に戻る

OGURISU Osamu oguri****@lagen*****
2004年 11月 24日 (水) 18:35:57 JST


小栗栖です。

>   これは、オブジェクトのコピーのセマンティクスをまだはっきり
>   決めていないためです。できればこういうジェネリックな操作は
>   全ライブラリで統一したいわけですが、じゃあcopy-objectは
>   一般的にdeep copyをすべきかshallow-copyをすべきか、
>   構造の共有がある場合なんかの処理も考えるとコンテキストを
>   渡していった方がいいか、なんていうあたりをまだちゃんと
>   考えていなくて、それが決まるまであんまりおおっぴらにしたくない、
>   という心理が働いていたりします。

なるほど、了解しました。

>   無難な方法としては、array-copyというのを用意しとく、という
>   手はありますね。それならarray限定のセマンティクスを与えておけます。
>   list-copyやvector-copyとの対応でいけば、shallow copyになるでしょう。

なるほど。えっと、shallow copyはオブジェクト内部のスロット
は、元の参照先と同一オブジェクトをそのまま参照させるような
コピーですよね。例えば、<u8array>であれば同じ
backing-storageを共有することになると。(あれ?もとのarray
と同じshapeのshare-arrayを作るのともしかして同じのような?)

いまのcopy-objectは<u8array>に対してはbacking-storageもeq?
でないものがつくられて、こちらはdeep copy的だと。

とりあえず、今、個人的にはdeep copy的なものが欲しいので、
copy-objectを真似てarray-deepcopyみたいなのを作って使って
おきます。

>   > 2つ目は純粋に質問で、SRFI-10に複素数のuvectorがないのはど

SRFI-10じゃなくて4でした。すみません。

>   たぶん、srfi-4を作った時はそこまで考えてなかった、というところじゃ
>   ないでしょうか。もともとsrfi-4のベクタ自体、ハードウェア表現を
>   意識していて、Schemeの抽象的な数値階層とは完全に対応していない
>   わけですし。

ああ、そうですね。たしかに。f32vectorだとかビット数を明示
的にするなんてのもあまりSchemeっぽくないなあと、使いはじめ
たときに思いました。

>   gauche.uvectorを拡張して複素数をサポートすること自体には
>   技術的な障害はないと思います。

はい。とりあえず実数と複素数でAPIが違うのは嫌な感じなので、
f64vectorをbacking-storageにして

    #,(<z64vector> 1+1i 2+2i 3+3i 4+4i)

とか書けようにとか<z64array>は作って試してみているところな
んですが、、、

>   Aubrey Jafferが提案したもうひとつのarray APIであるsrfi-47には、
>   複素数とビットアレイが入っていますね。そっちを効率良くサポート
>   することになったらもしかすると入れちゃうかもしれません。

おお。そちらを期待して、z64vectorとかであんまり凝るのはや
めます(^^;
--
小栗栖 修 / OGURISU Osamu



Gauche-devel-jp メーリングリストの案内
アーカイブの一覧に戻る