個人的には Sagittarius に欲しいライブラリは gdbm とかかな。 リレーショナルデータベースはちょっとしたスクリプトには豪華すぎる。 sqlite があるから気軽な用途にも使えるんだろうけど私は SQL とかようわからんし。
— (32) 齊藤敦志 (@SaitoAtsushi) October 18, 2013
GDBMは外部ライブラリが必要なのでWindows対応しづらいという点から直接のサポートは別の方法を取るとして、とりあえずインターフェースを作った。APIはGauche互換(というかほぼ流用)で、こんな感じで使える。
(import (rnrs) (dbm) (clos user))
(define-constant +dumb-db-file+ "dumb.db")
(define dumb-class (dbm-type->class 'dumb))
(let ((dumb-dbm (dbm-open dumb-class :path +dumb-db-file+
:key-convert #t :value-convert #t)))
(dbm-put! dumb-dbm 'key1 #t)
(dbm-get dumb-dbm 'key1)
(dbm-close dumb-dbm))
Sagittarius本体でサポートするのはPythonのdbm.dumbに影響を受けた(dbm dumb)。ひょっとしたらGaucheのfsdbmみたいなのも入れるかもしれないが、当面は予定がない(訳:自分が使わない)どうでもいい情報としては、DBMが開いてるかとかのチェックをCLOSの:beforeでやってること辺りか。わざわざcall-next-method呼ばなくてもいいので便利である。
No comments:
Post a Comment