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

Back to archive index

OGURISU Osamu oguri****@lagen*****
2004年 11月 24日 (水) 16:16:21 JST


>   わかりました。これは結構深い問題で、根本的に直すにはwrite-objectの
>   プロトコルを変えないとだめです。

素早い対応と解説をありがとうございます。そんな深いとは思い
ませんでした。


array関係でもうひとつ気付いたのですが、<f64array>などの均
一配列はSRFI-25ではなくGaucheの拡張なんですよね。で、この
均一配列のshare-array を作ってみると、array-refで要素にア
クセスできません。

(let1 a #,(<u8array> (0 3 0 3) 1 2 3 4 5 6 7 8 9)
  (let1 s (share-array a (shape 0 2 0 2) (lambda (x y) (values x y)))
    (array-ref s 0 0)))

gosh> *** ERROR: vector required, but got #u8(1 2 3 4 5 6 7 8 9)

share-arrayが<array>のインスタンスを返すからのようで、
share-arrayの定義内で
    (make <array>
を
    (make (class-of array)
に置き換えれば良いようです。


これに加えて2つ教えていただきたいことがあります。1つ目は
array.scm内に定義されたcopy-objectのことで、これがexportさ
れていないのはなぜでしょうか。

SRFI-25の主旨が``encouraging a declarative style of
programming.''なのでSRFIのプロシージャでないことは納得した
のですが、実際arrayを複製したいことはあるのでexportされて
いると便利なんです。SRFI-25の範囲で効率的に複製する方法は
ないみたいですし(ここを私は間違ってる?)

# lapackのwrapperを作ったのですが、配列としてarrayの
# backing-storageを渡しているのですが、これがlapackに書き
# 変えられてしまうのでcopyを渡したいのです。

2つ目は純粋に質問で、SRFI-10に複素数のuvectorがないのはど
うしてなんでしょう? 複素数自体がR5RSにあるのだから、
uvector もあっても良いと思ったのです。SRFIの議論も眺めてみ
たんですが、該当する議論を見つけられなくて。もちろん、浮動
小数点数のuvectorから作ればいいので困りはしないんですが。
--
小栗栖 修 / OGURISU Osamu



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