2015-06-25 84 views
1

我有一個主題叫做嚴謹與懶惰評價要學習功能與邏輯語言。在搜索時,我可以找到與Haskell相關的主題。我不知道那是什麼。我所瞭解的編程語言是C,C++,java。一般人可以解釋一下嚴格和懶惰的評估是什麼意思。嚴格與懶惰評價之間有什麼區別

回答

0

懶惰評估等待計算任何東西,直到它需要。這樣可以節省時間,如果存儲值並僅在特定情況下使用。我相信嚴格意味着他們馬上被計算出來。

0

有關除Haskell外的其他語言的惰性評估的定義和示例,請參見Wikipedia page

0

使用懶惰評估時,只需要在需要時計算一個值。一個簡單的例子就是當我們有一個if語句時。

if(B1 OR B2)....//do something 

假設B1爲真,我們從左到右評估。我們知道B1是真實的,所以不需要評估B2,因爲OR運算符的定義。現在假設B1是假的,現在我們必須知道if語句的真值取決於B2,所以我們必須評估B2。相同的比喻可以用於其他邏輯運算符。嚴格(或貪婪)評估計算B1和B2的值。我們可以進一步利用懶惰評估。假設我們有以下代碼:

some_value = map (+1) some_list //increases all values in the list by 1 

我們還可以對上述語句使用懶惰評估。我們可以在我們的代碼中的某個地方定義它。如果我們從不在代碼中使用some_value,則不需要計算它。如果我們在程序中進一步調用它,它會計算並存儲在內存中,所以我們不需要每次需要some_value的值時計算它。無論我們是否使用它的價值,嚴格的評估都會強制計算。懶惰評估和嚴格評估都有各自​​的優缺點。