在大多數編程語言中,傳遞給函數的參數在之前被評估爲,函數使用它們,也就是說,它們被急切地評估。爲什麼大多數編程語言對傳遞給函數的參數使用急切的評估?
對我來說,似乎只有在函數使用它們,即懶惰地評估參數時,纔會更有意義。這對我來說更有意義,因爲它看起來會帶來性能上的好處:爲什麼要評估那些永遠不需要的東西?
而且,假設你想實現一個if
函數接受一個布爾值,以及對象返回如果布爾是真實的,而另一個對象返回如果布爾是假的:
object if(bool condition, object valueIfTrue, object valueIfFalse) {
if(condition) return valueIfTrue;
return valueIfFalse;
}
在即使函數總是隻需要其中的一個,也總是對兩個對象進行評估,這最多會導致輕微的不必要開銷,並且最壞的情況下會導致無限循環。這就是說,由於大多數編程語言都使用了對函數參數的急切評估,所以我認爲它通常是以這種方式進行的。在這裏,我忽略了一些急切的評價是否有很大的好處,僅僅是因爲以這種方式實現語言比較容易,是傳統還是什麼?
因爲在這些非惰性語言中編譯/解釋代碼很容易。 – 2012-01-10 04:21:25