Shiro Kawai
shiro****@lava*****
2004年 11月 24日 (水) 16:47:36 JST
From: OGURISU Osamu <oguri****@lagen*****> Subject: [Gauche-devel-jp] Re: [Q] gauche.array Date: Wed, 24 Nov 2004 16:16:21 +0900 > array関係でもうひとつ気付いたのですが、<f64array>などの均 > 一配列はSRFI-25ではなくGaucheの拡張なんですよね。で、この > 均一配列のshare-array を作ってみると、array-refで要素にア > クセスできません。 [...] > share-arrayの定義内で > (make <array> > を > (make (class-of array) > に置き換えれば良いようです。 了解です。直しておきます。 > これに加えて2つ教えていただきたいことがあります。1つ目は > array.scm内に定義されたcopy-objectのことで、これがexportさ > れていないのはなぜでしょうか。 これは、オブジェクトのコピーのセマンティクスをまだはっきり 決めていないためです。できればこういうジェネリックな操作は 全ライブラリで統一したいわけですが、じゃあcopy-objectは 一般的にdeep copyをすべきかshallow-copyをすべきか、 構造の共有がある場合なんかの処理も考えるとコンテキストを 渡していった方がいいか、なんていうあたりをまだちゃんと 考えていなくて、それが決まるまであんまりおおっぴらにしたくない、 という心理が働いていたりします。 無難な方法としては、array-copyというのを用意しとく、という 手はありますね。それならarray限定のセマンティクスを与えておけます。 list-copyやvector-copyとの対応でいけば、shallow copyになるでしょう。 > 2つ目は純粋に質問で、SRFI-10に複素数のuvectorがないのはど > うしてなんでしょう? 複素数自体がR5RSにあるのだから、 > uvector もあっても良いと思ったのです。SRFIの議論も眺めてみ > たんですが、該当する議論を見つけられなくて。もちろん、浮動 > 小数点数のuvectorから作ればいいので困りはしないんですが。 たぶん、srfi-4を作った時はそこまで考えてなかった、というところじゃ ないでしょうか。もともとsrfi-4のベクタ自体、ハードウェア表現を 意識していて、Schemeの抽象的な数値階層とは完全に対応していない わけですし。 また、ハードウェア上での効率、ということを主眼にすると、 ハードウェアネイティブな複素数型というのがサポートされることは あまりないわけで、複素数均質ベクタがあってもあまりハードウェアの 恩恵は受けられないんじゃないか、という考えもあるかもしれません。 gauche.uvectorを拡張して複素数をサポートすること自体には 技術的な障害はないと思います。 Aubrey Jafferが提案したもうひとつのarray APIであるsrfi-47には、 複素数とビットアレイが入っていますね。そっちを効率良くサポート することになったらもしかすると入れちゃうかもしれません。 --shiro