Jun Inoue
jun.l****@gmail*****
2006年 4月 28日 (金) 10:04:00 JST
YamaKen <yamak****@bp*****> writes: > At Thu, 27 Apr 2006 14:24:18 -0700, > jun.l****@gmail***** wrote: >> >> YamaKen <yamak****@bp*****> writes: >> > 懲りずに別案ですが、SCM_TRUTH()はどうでしょう。 >> > >> > if (TRUTH(scm_p_memq(key, lst))) >> > if (!TRUTH(scm_p_zerop(n))) >> > >> > 個人的にはこれならムリヤリ感も無く受け入れ可能と感じます。 >> >> 個人的には英語的に変な感じを受けるので余計無理矢理感が増大してます。 >> Truth はモノなので assertion に見えません (名詞だし)。 > > TRUTH()の評価結果がa truth valueというモノであるという意図のマク > ロです。 それはわかってます。でも value を補完せよというのは無理があるでしょう。 それに揚げ足取りに近いですが、"a truth value" も「真理値なり」であって 「真なり/真なる値なり」ではないし。 > 関数的マクロの名前なのに'TRUTH'が動詞でない、という事に > 違和感を覚えてるのかもしれませんが、以下のいずれかのような概念で > 理解してください。 > > (truth_value_t)a_scheme_object > EVAL_TO_A_TRUTH_VALUE(assertion) > > 命名感覚はG_OBJECT(button)のような動詞でないマクロと同じです。 それとは意味合いが違います。G_OBJECT (b) は b is (an) object に綺麗に map するので問題ありません。一方 TRUTH(cond) はまず第一印象が確実に memq is the truth なので変です。多くの人はここで「変だけど気にしないこ とにするよ」判断を下すと思いますが、何とか頭を捻ってみたとしても、 truth → truth value → T *or F* → source と矛盾 あー、ちょっと待った。やっと言いたいことがわかった。 TRUTH (x) := diff (x - false) if (TRUTH (x)) ←→ diff (x - false) != 0 ってことね。Absolute falsehood からの距離 (Trueness の方が適切というか マシだと思います。説明がないと理解できない点では大差ありませんが。) を rank なり norm なりで数値化したものを返させて、C の 0 か !0 かの真偽判 定に当てるって事ね。 それをこじつけと言うと思います。特に != 0 もついてない状態では暗号でし かありません。 >> 真偽値の真の方が持つ「真さ加減」を truth とはいいますが。 > > この意味ですね。「真さ加減」がゼロなのがfalse。 その truth は普通 scale ではなくて dichotomy です。特に主観-base の fuzzy 論理 (= 日常言語) が暗黙に排除されている context では。 なので読み手はまず TRUTH() が trueness への accessor だと気づく必要が あります。さらに truth value == { T, F } という固定観念を突破する必要 があります。私はこの時点で絶望的だと思いますが、それをクリアしたら今度 はいきなり C の世界に戻って、「ああ、0 なら偽だな」と考えないといけま せん。論理が飛躍しまくりです。 何も知らない人にとってはそれよりも native じゃないから true と truth の区別がついてないのね→truep のつも りか の方がよっぽど納得が行くでしょう。Comment を読んで理解しても the truth が目立ちすぎて icon 性は最悪です。!FALSEP の方がよっぽど読みやすいと思 う。