खोज…


आलसी मूल्यांकन परिचय

F # सहित अधिकांश प्रोग्रामिंग लैंग्वेज, स्ट्रेट इवैल्यूएशन नामक मॉडल के अनुसार तुरंत गणना का मूल्यांकन करती हैं। हालांकि, आलसी मूल्यांकन में, कम्प्यूटेशंस का मूल्यांकन तब तक नहीं किया जाता है जब तक कि उन्हें जरूरत न हो। F # हमें lazy कीवर्ड और sequences दोनों के माध्यम से आलसी मूल्यांकन का उपयोग करने की अनुमति देता है।

// define a lazy computation
let comp = lazy(10 + 20)

// we need to force the result
let ans = comp.Force()

इसके अलावा, जब आलसी मूल्यांकन का उपयोग किया जाता है, तो संगणना के परिणाम बंद हो जाते हैं, इसलिए यदि हम परिणाम को मजबूर करने के पहले उदाहरण के बाद बल देते हैं, तो अभिव्यक्ति का फिर से मूल्यांकन नहीं किया जाएगा।

let rec factorial n = 
  if n = 0 then 
    1
  else 
    (factorial (n - 1)) * n


let computation = lazy(printfn "Hello World\n"; factorial 10)

// Hello World will be printed
let ans = computation.Force()

// Hello World will not be printed here
let ansAgain = computation.Force()

F # में आलसी मूल्यांकन का परिचय

F #, अधिकांश प्रोग्रामिंग भाषाओं की तरह, डिफ़ॉल्ट रूप से Strict Evaluation का उपयोग करता है। सख्त मूल्यांकन में, गणना को तुरंत निष्पादित किया जाता है। इसके विपरीत, आलसी मूल्यांकन, संगणना के निष्पादन को तब तक रोकते हैं जब तक कि उनके परिणामों की आवश्यकता न हो। इसके अलावा, आलसी मूल्यांकन के तहत एक संगणना के परिणाम को कैश किया जाता है, जिससे एक अभिव्यक्ति के पुनर्मूल्यांकन की आवश्यकता होती है।

हम lazy खोजशब्द और Sequences दोनों के माध्यम से F # में आलसी मूल्यांकन का उपयोग कर सकते हैं

// 23 * 23 is not evaluated here
// lazy keyword creates lazy computation whose evaluation is deferred 
let x = lazy(23 * 23)

// we need to force the result
let y = x.Force()

// Hello World not printed here
let z = lazy(printfn "Hello World\n"; 23424)

// Hello World printed and 23424 returned
let ans1 = z.Force()

// Hello World not printed here as z as already been evaluated, but 23424 is
// returned
let ans2 = z.Force()


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow