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

Back to archive index

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



Gauche-devel-jp メーリングリストの案内
Back to archive index