ほとんどのプログラミング言語では、関数に渡された引数は、の前に評価されます。より前に評価されます。つまり、それらは忠実に評価されます。ほとんどのプログラミング言語は、関数に渡される引数の評価を熱く使用するのはなぜですか?
私にとって、関数がそれらを使用すると、遅延した引数だけを評価するほうがはるかに意味があるようです。なぜなら、それは決して必要ではないものを評価する理由です。
object if(bool condition, object valueIfTrue, object valueIfFalse) {
if(condition) return valueIfTrue;
return valueIfFalse;
}
で:
また、あなたはブール値がfalseの場合に返すブール値を受け入れるif
機能、およびブール値がtrueの場合に返されるオブジェクト、および他のオブジェクトを実装するとし言語が引数を熱心に評価すると、両方のオブジェクトが常に評価されますが、関数は常に最高でもわずかなオーバーヘッドが発生し、最悪の場合は無限ループが発生します。
しかし、ほとんどのプログラミング言語は関数の引数を熱心に評価しているので、通常そういう理由があるはずです。ここで熱心な評価の大きなメリットがありますか?見落としているのですか?それは、言語をそのように実装するのが簡単だったからです。それは単に伝統ですか、それとも何ですか?
これらの非遅延言語でコードをコンパイル/解釈するのは簡単だからです。 –