Shiro Kawai
shiro****@lava*****
2003年 1月 21日 (火) 03:22:18 JST
From: KOGURO Naoki <naoki****@kogur*****> Subject: Re: [Gauche-devel-jp] 辞書とイテレータ Date: Tue, 21 Jan 2003 00:49:57 +0900 > で、この cursor はどれだけ robust に作られるべきなのでしょうか。例えば、 > 以下の場合の動作はどうすべきでしょう? > (1) (cursor 'delete) を呼んだあとの (cursor 'get), (cursor 'update > value), (cursor 'delete) > (2) (cursor 'update value) を呼んだあとの (cursor 'get) > (3) call-with-iterator の iteratee で、同じ dictionary に対して > call-with-iterator を呼んだとき。 (内の iteratee で更新をかけてしまっ > たときに外の iteratee からはどう見えるべきなのか?) これは悩ましい。 (1)はエラー、(2)はvalueが返る、というのが自然なような気も しますが、non-trivialな辞書オブジェクトの実装にどんな影響が 出るかぱっと思い付きません。仮決めしておいて、色々な実装が 揃うのを待つのがいいかな。 (3)は、ネストする場合は非破壊的操作のみ保証する、でいいと 思うのですが、イテレータ実装者がどこまで検出すべきかというのは 検討課題ですね。call-with-iteratorがDBサーバにつないで そのdynamic extentの間をtransactionとするってな場合なんかは ネストは検出しないとまずいでしょう。しかし、全ての場合において ネストの検出を要求すべきかどうかはまだ判断つきかねます。 徐々に実装を書いてみながら煮つめて行っても良いとは思います。 --shiro