[Anthy-dev 2306] Re: r5rs : SigSchemeのFUNC_TYPE整理

Zurück zum Archiv-Index

Kazuki Ohta mover****@hct*****
2005年 8月 29日 (月) 00:53:06 JST


太田です。

r1345でcommitしました。有難う御座いましたm(_ _)m

> ;; もうちょっと自動化できると思ってたのに、アテが外れた。
>
> このパッチは「FUNCTYPE の整理」だけに終始してます。Commit log に書くも
> のとして "reorganize FUNCTYPEs" で済ませられないものは:
>
> * sigscheme/sigschemetype.h
>   - (ScmFuncType0, ScmFuncType1, ScmFuncType2, ScmFuncType3,
> ScmFuncType4, ScmFuncType5, ScmFuncTypeEvaledList,
> ScmFuncTypeRawList, ScmFuncTypeRawListTailRec,
> ScmFuncTypeRawListWithTailFlag) new types - Gather typedefs in
> one place.
>
> これぐらいでしょうか。sigscheme.c のコンマの位置はそろえるのを諦めまし
> た。そろえようとしたらはみ出すし。せめてもの足掻きに種類ごとに並べてみま
> したが、これに拘るとどれかの関数の種類を変えたくなったときに地獄を見る…
> どうせ search の対象にしかならないのでいいでしょう。それと sigscheme.h
> のプロトタイプは grep で生成したので順不同です。そのせいでパッチがアホほ
> ど肥大化してますが、ご勘弁を。
> ;; 太田さんが勘弁しても Anthy-dev の設定は勘弁してくれませんでした。
> ;; 仕方ないので圧縮。ああまた archive に読むのが面倒なファイルが増える…
>
> 以前、四則演算を EVALED_LIST (の前身)にしたとき、「RAW_LIST にすれば速く
> なってメモリ消費量も小さくなる」みたいなことを書いたと思うんですが、よく
> 考えたら今のままでは apply とうまく噛み合いませんね。apply は RAW_LIST
> 系に適用できなくなっているので。打開策をいくつか考えてみました:
>
> (A) Function application list の先頭に書けるものなら何でも apply を許し
> てしまう。つまり RAW_LIST も扱うように apply を変更する。
>
> これが一番ストレートです。ただし厳密に言えば R5RS に非準拠? かな? という
> ところです。R5RS では apply の引数は procedure となっていて、if や cond
> を apply することはできません。多分。Gauche と Guile には拒否られた。
> でもきっと害は無いでしょう。
> それから macro の実装に影響するかも知れません。やり方次第ではしないかも
> 知れません。
>
> (B) FUNCTYPE_2N を復活させる。
>
> よく考えたらこれって結構効率いいですね。私が悪ぅございました。四則演算以
> 外に数値比較にも適用できるし。ただし他の「自前で評価した方が効率の良い関
> 数」 (append とか、map, cons* など) には使えません。これを採用する場合、
> 名前は CURRY とかのほうがわかりやすい (覚えやすい) かと思います。
>
> (C) RAW_LIST を apply 可能なものと不可能なものに分ける。
>
> また名前決めが(笑)
> R5RS では procedure が apply 可能で syntax が不可能となっていますが、よ
> く考えたらこれこそが EVALED_LIST と RAW_LIST の区別なんですよね…気づくの
> 遅い。
>
> (D) EVALED_LIST のまま放っておく。
>
> …ってそれは解決策ではないぞ…
> 四則演算、特に加減算は結構使うと思うので、できることなら中間生成物を減ら
> したいところです。
>
> どう思われますか?

-- 
-------------------------------------------------
Kazuki Ohta : mover****@hct*****
-------------------------------------------------


Anthy-dev メーリングリストの案内
Zurück zum Archiv-Index