2010/11/01(Mon) 23:37:24 編集(投稿者)
■No54774 (gonna さん) に返信
> VBの話ですが、VBにはAndとAndAlsoが有りますよね。
> AndAlsoはAndを効率化した物、And以前に偽ならば即刻偽と帰してしまうすぐれものらしいです。
>
> ここで一つ疑問が生まれました。
> 「And以前に偽ならば即刻偽と帰してしまう」と云う事がどの様な状況に対しても
> 必ず正しい事柄なら、AndAlsoという命令語は無くして、Andの内部構造をAndAlsoのものに
> 変えてしまえばよいのではないでしょうか。
>
> なのにAndAlsoが存在するという事は、何か意味が在る様に思えて仕方が無いのですが、
> 実際の所はどうなのでしょう。
A and B => AもBも必ず評価される。つまりA,Bが関数の呼び出しであればAによる副作用と
Bによる副作用は結果にかかわらず起こる。
A andalso B => Aを評価してFalseならBは評価されない。つまりAの評価結果によりBによる
副作用を発生させる事ができない。
という違いがあります。評価による副作用がなければandの実装をandalsoにする事も出来るのでしょうけど
前者のような組み方は出来なければならないので(それが良い方法かは別として)2つになっているのでしょう。