[Anthy-dev 2257] Re: r5rs: SigSchemeへの移行方針

アーカイブの一覧に戻る

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*****



Anthy-dev メーリングリストの案内
アーカイブの一覧に戻る