• Read older messages (April 13, 2007)
  • kiyoka has left
  • kenhys has left
  • koguro has left
  • has left
  • has joined
  • shiro has left
  • 7:25am (April 14, 2007) 26x26
  • うーん、Gauche CVS HEADだと、Kahua CVS HEADのインデックススロットのテストが失敗する...
  • 昨日の昼くらいまでは問題なかったはずなんだけどな...
  • src/hash.c 1.50->1.51の変更が理由か...
  • rui has joined
  • Nickname has joined
  • Nickname is now known as shiro
  • 11:42am (April 14, 2007) 26x26shiro
  • あれ、外に影響出ないと思ってたんだけど
  • もしかしてハッシュテーブルのiterate中にそのハッシュテーブル自身を変更してる?
  • 12:17pm (April 14, 2007) 26x26
  • はいしてます
  • ほら、hash-table-clear! のかわりに、hash-table-for-eachで全要素を削除してます
  • やっぱりそこか
  • キャッシュが正常にクリアされないところまで突き止めて、他の用事で止まってたんですが...
  • gosh> (define ht (hash-table 'eqv? '(a . 1) '(b . 2) '(c . 3)))
    ht
    gosh> (hash-table-for-each ht (lambda (k _) (hash-table-delete! ht k)))
    #<undef>
    gosh> (hash-table-for-each ht (lambda (k v) (format #t "~s&~s\n" k v)))
    a&1
    #<undef>
    gosh> (define ht (hash-table 'eqv? '(a . 1) '(b . 2) '(c . 3)))
    ht
    gosh> (hash-table-for-each ht (lambda (k _) (hash-table-delete! ht k)))
    #<undef>
    gosh> (hash-table-for-each ht (lambda (k v) (format #t "~s&~s\n" k v)))
    a&1
    #<undef>
    
  • あうあうあう
  • 結局、効率も悪そうなので既存のhash-tableの全要素をdeleteするんじゃなくて、あたらしいhash-tableを生成することにしました
  • とはいえ、他のテストもコケるなぁ...
  • hash-tableのイテレーションの中で、まわしているhash-table自身を変更しちゃだめだとすると、ちょっとキツい制約ですね
  • 1:11pm (April 14, 2007) 26x26shiro
  • hash-table-clear!があれば今回はいいわけですね
  • 今までも、イテレーション中で追加があるとおかしくなる可能性はありました。
  • long has joined
  • 1:15pm (April 14, 2007) 26x26shiro
  • イテレータが指してる要素に限り削除可能、ってのはできるかもしれん
  • long has left
  • cut-sea has joined
  • 1:19pm (April 14, 2007) 26x26cut-sea
  • びぜんさんー
  • 読書会用のネットワークセットのありか知らないっすか?
  • nobsun has joined
  • 1:22pm (April 14, 2007) 26x26nobsun
  • オライリーの袋にはいってるやつ。
  • >び
  • miku has joined
  • nobsun has left
  • miku has left
  • jmuk has joined
  • jmuk has left
  • shiro has left
  • cut-sea has left
  • shiro has joined
  • 6:22pm (April 14, 2007) 26x26shiro
  • hashtable戻した。
  • もともと、今回の変更は、TreeMapのイテレータの方にイテレータインタフェースを統一しようというもの。
  • TreeMapのイテレータは「最初に一個進めてから、指してるエントリを返す」、という動作をする。こうしとくと便利なのは、初期値として「最小値よりひとつ前であり、かつ最大値よりひとつ後」という仮想的なエントリを指すようにしとくと
  • 次にNextを呼び出してゆけば最小値から増加方向に、Prevを呼び出してゆけば最大値から減少方向にイテレートできる。
  • 一方、従来のHashTableのイテレータは、「指してるエントリを返し、同時に一個進める」、という動作をしていた。
  • 初期状態で最初のエントリを指してる形。もっともHashTableの場合はキーの順序に意味はないので、「最初」と言っても便宜上のものだけど。
  • で、意味が違うのは混乱のもとだからって統一してみたんだけど。
  • 「イテレートしているエントリをdeleteする」という動作を行った時におかしなことが起きてしまったと。
  • エントリのdelete時に、エントリ内のnextポインタをクリアするので(GC対策)、イテレータが「次」をたどれなくなってしまうのが原因。
  • これを防ぐには、イテレータが常に「次のエントリ」を計算してキャッシュしておけば良い。
  • ところが、従来のHashtableのイテレータで「現在のエントリ」を指しているポインタを「次のエントリ」を指しているキャッシュと読みかえれば、実はまったく同じコードになる。
  • TreeMapと違ってPrevが無いからね。
  • ということに気づいたのでrevertした次第。
  • shiro has left
  • 7:40pm (April 14, 2007) 26x26
  • 了解です
  • ちょっとKahuaをいじったタイミングとぶつかったので
  • 泡を食いました(笑)
  • で、読書会用のネットワークセットの在処は知らないよ(遅すぎだが)
  • 先週のGaucheFestの時に使わなかったんだろうか
  • 俺はリモート参加だから触ってないしな
  • rui has left
  • kiyoka has joined
  • 11:10pm (April 14, 2007) 26x26kiyoka
  • Lingrの新しい機能として、タイムゾーンサポートされたみたいですね。
  • 部屋のオーナーしか変えれないそうです。
  • (部屋のオーナーは私です。)
  • Shiroさんには申し訳ないですが、Japanに設定しちゃっていいですかね。
  • 見たところこの部屋では日本にお住まいの人が多いみたいですので。
  • jmuk has joined
  • Read newer messages (April 15, 2007)

April 2007

Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 1 2 3 4 5

About this room

This is a room for discussion of Gauche programming language.
And OK to use for GaucheFest.
Gauche programmers can chat in English and Japanese I think.
You can try to chat in English or Japanese.
timezone: Japan
privacy: unlisted
owner: kiyoka

Chatters

  • 48x48nobsun
  • 48x48cut-sea
  • 48x48
  • 48x48kiyoka
  • 48x48shiro