YamaKen
yamak****@bp*****
2005年 8月 22日 (月) 15:17:19 JST
At Mon, 22 Aug 2005 13:46:53 +0900, mover****@hct***** wrote: > 予想以上にSIOD依存が激しいようですね。基本的な方針には賛成なので > すが、util.scmのSRFI-1互換関数を復活させるのには少し躊躇しています。 > iterate_listsが空リストをうまく扱えていないような気がします。以下のような > バグも有ったり。こう変更すると動かなくなるのですがね...という訳でtrunkの方 > のiterate_listsをもう一度見直して頂けると嬉しいです。 こりゃ恥ずかしいバグですね。r1274で修正しておきました。どうもです。 しかし、この修正は以下のようなリストが1つだけのケースを高速化す るだけの影響しか与えません。 (filter positive? '(0 -1 2 -3 4)) 元の(uim_scm_length(lists) == 1)のコードではこの高速実行パスがい つでも無効になっていただけで、実行自体は正常でなければおかしいで す。コードを見直してtest-uim-utils.scmにもテストを追加してみまし たが、特におかしなところは見つかりませんでした。 確実におかしな結果になるテストケースはありますか? > Index: uim-util.c > =================================================================== > --- uim-util.c (リビジョン1271) > +++ uim-util.c (作業コピー > @@ -508,7 +508,7 @@ > uim_lisp elms, rest, rests, mapped, res, termp, pair, form; > uim_bool single_listp; > > - single_listp = (uim_scm_length(lists) == 1) ? UIM_TRUE : > UIM_FALSE; > + single_listp = (uim_scm_c_int(uim_scm_length(lists) == 1)) ? > UIM_TRUE : UIM_FALSE; > res = seed; > if (single_listp) { > rest = uim_scm_car(lists); ------------------------------- ヤマケン yamak****@bp*****