加藤@ODNです.

In article <uhdjh3sm3.fsf@anet.ne.jp>, OOTANI TAKASHI wrote:
>以前同じような議論をした記憶が。
>
>In article <42328fca.7081%katoh@pop12.odn.ne.jp>
>    Hideki Kato <katoh@pop12.odn.ne.jp> writes:
>> && や || は,一方の値に依っては,残りを計算しなくても全体の値が決まると
>> いう,その演算の(ある意味特殊な)性質を利用しているので,?: 演算子とは
>> 若干性質が異なるように思えます.例えば,& や | の仲間の ^ (exclusive or) 
>> にはこれは適用できません.
>
>&& と &、|| と | は全く異なる演算子なんで、^ を持ち出しても無意味です。

「全く」異なる,のでしょうか? それなら何故同じ文字を用いたのでしょう.
+ と ++ の関係と同様に,類似性があるから同じ文字を用いたと考える方が自然
だと思います.

>> もちろん,?: に後ろの二項とも評価するように操作的な意味を与える事は可能
>> で,それをしなかったのは何故か,という話なら,Cの場合は,実行速度最優先
>> で設計したから,ということだと思います.
>
>おそらく、algol60の条件式(if 条件式 then 式 else 式)由来だと思います。
>excelのセル関数IFはTHEN部もELSE部も必ず評価するので使いにくいことこの上なし。

あ,それはあるかも.#Lisp1.5 にも入れときゃ良かったのに.< if

>> 蛇足ですが,Lisp で and や or を cond の代わりに使うのは,私は,邪道(あ
>> るいは,トリッキーで真っ当なプログラマーはやるべきではないこと)だと思い
>> ます.
>
>and,or は全引数を評価してからand/or演算をする仕様であっても動作するように
>書くべきという考えでしょうか。condだけ対象外な理由がわかりません。

読み難い,バグり易い,cond で十分,が理由です.
#GNUS の件は二番目の例でした.

>perlで、hogehoge or die というのをよく見かけますが、あれも邪道だと思いますか?

perl は使った事がないので分かりません.

># Cでも 0||3 が1でなく3になればすっきりすると思いますが。

ふむむ,それも面白いかも.
-- 
Hideki Kato <mailto:katoh@pop12.odn.ne.jp>