Kimura Fuyuki
fuyuk****@hadal*****
2002年 12月 13日 (金) 09:12:17 JST
At Wed, 11 Dec 2002 17:37:11 -1000 (HST), Shiro Kawai <shiro****@lava*****> wrote: > > APIとして、pack/unpack系とread-*/write-* 系は両方使いでが > あるのでいずれ用意したいですね。 Python が両方あるかんじなんですよね。あんなあたりが Gauche に向いてる んじゃないかと。 > 実装の選択として、あくまでstream-baseでやるか、buffer-base > (u8vector等から直接変換)も用意するかというissueがあります。 > stream-baseのread-*/write-*関数を基本にし、それらを使って > pack/unpackを書き、bufferは内部的にstreamにして読み書きする、 > というのが素直なんですが、生のCの構造体をu8vectorにマップして > いじりたい、というような場合は、pack!みたいな関数にバッファと > オフセットを渡して直接読み書きできるほうが嬉しいかなと。 > 将来FFIを入れる時にも使えそうですし。 stream or buffer はたぶん stream が先、というか stream 系の API があっ て損することはないだろうという考えです。Gauche はわりと port 指向の Scheme になりそうですし(buffer ベースのもいずれ必要になると思いますが)。 * pack/unpack on Lisp についてはけっこう調べたので、せっかくだから URL をまとめておきます。 <ユーザーの声> http://www.geocrawler.com/mail/msg.php3?msg_id=3190289&list=326 http://sources.redhat.com/ml/guile/2000-01/msg00343.html <実装例> (Lisp) http://www.newlisp.org/download/newlisp_manual.html#pack (Emacs) http://www.geocrawler.com/mail/msg.php3?msg_id=1876323&list=338 (Scheme) http://www-2.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/lang/scheme/code/ext/strings/unpack/0.html -- 木村 冬樹