[Gauche-devel-jp] QDBM

Back to archive index

Shiro Kawai shiro****@lava*****
2003年 10月 21日 (火) 17:54:41 JST


From: Kimura Fuyuki <fuyuk****@nigre*****>
Subject: Re: [Gauche-devel-jp] QDBM
Date: Tue, 21 Oct 2003 13:48:38 +0900

> ひとつお願いがあります。こういった細かいモジュールを置くために、ここ
> (http://sourceforge.jp/projects/gauche/)のリポジトリなどを使わせてもら
> うわけにはいかないでしょうか?

QDBMに関してはとりあえずOKです。fuyukiさんをcommiterに
加えておきましたので、CVSにGauche-qdbmモジュールとして置いて下さい。
ファイルリリースの方もGauche-qdbmパッケージとしてお願いします。
将来的には専用サイトを立ち上げた方がよいのかもしれませんが、
とりあえずlazyにやってみましょう。

# gauche.orgはとられてるみたい。gauche.netは空いてるような。

> ついでに今ちょっと困っている問題をひとつ。
> 
> dbm.*をまとめてuseしたくて0.7.2で追加されたlibrary-*をごにょごにょして
> いたのですが、こんなことをするしかないのでしょうか?
> 
> (library-for-each 'dbm.*
> 		  (lambda (m p)
> 		    (eval `(use ,m) (interaction-environment))))

最終的には、javaみたいに (use dbm.*)のようなことが
できる方向を考えています。library-for-each等はそれを実現する
インフラとして作成しました。ただ、単純にuseを複数モジュールの
ロードに流用すべきかどうかについてまだ充分に考えていないので
保留にしてあります。特に、あるモジュールの特定のバージョンを
指定してロードしたいだとか、シンボルを選択的にインポートしたり
リネームしたりだとか、useの機能にも色々バリエーションが考えら
れるため、そういう拡張との親和性を考えたいので。

とりあえずやるなら、evalを使うのではなく、マクロ展開時に評価
させるのが良いと思います。

  (define-macro (multi-use pattern)
    `(begin
      ,@(library-map pattern
          (lambda (m p) `(use ,m)))))

  (multi-use dbm.*)

--shiro

      






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