[Gauche-devel-jp] digest

Back to archive index

Shiro Kawai shiro****@lava*****
2002年 12月 12日 (木) 12:37:11 JST


From: Kimura Fuyuki <fuyuk****@hadal*****>
Subject: [Gauche-devel-jp] digest
Date: Thu, 12 Dec 2002 09:38:32 +0900

> ただ、マニュアルにひとつ事実誤認があって、digest 系関数も 
> digest-string 系と同様結果は string で返します(port に出力でなく)。実
> はここは私も迷ったところなので、マニュアルにコードを合わせてしまったほ
> うがいかもしれません。

ああ、ついrfc.base64やtext.trに引きずられて勘違いして
いました。
port->portの方が他のモジュールとの一貫性はあるんですが、
digestを使う場面を考えるとportに出力する利点はあまり
なさそうですね。直しておきます。

> それと、digest-string の実装は digest.scm のなかに移してしまったほうが
> すっきりすると思います(添付参照)。

そうしましょう。

> の問題に個人的な結論が出ているのでついでに書いておきます。こういう用途
> やバイナリファイル操作のために Perl のpack/unpack みたいのがあればいい
> なあとも思っていて、それはいまでも変わらないのですが、Scheme の場合ま
> ず必要なのは「read/write のペアたくさん」です。

APIとして、pack/unpack系とread-*/write-* 系は両方使いでが
あるのでいずれ用意したいですね。

実装の選択として、あくまでstream-baseでやるか、buffer-base
(u8vector等から直接変換)も用意するかというissueがあります。
stream-baseのread-*/write-*関数を基本にし、それらを使って
pack/unpackを書き、bufferは内部的にstreamにして読み書きする、
というのが素直なんですが、生のCの構造体をu8vectorにマップして
いじりたい、というような場合は、pack!みたいな関数にバッファと
オフセットを渡して直接読み書きできるほうが嬉しいかなと。
将来FFIを入れる時にも使えそうですし。

このへんは使ってみないとわからないところもあるので、
実験的にread-*/write* 系あたりから実装していって
みましょうか。

--shiro



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