मैं SICP के निम्न अनुभागएसआईसीपी chpt 4.1 के बारे में प्रश्न: कैसे (expr का विश्लेषण) तेजी से eval मदद करते हैं?
http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-26.html#%_sec_4.1.7
पाठ के अनुसार, eval
के निम्नलिखित परिवर्तन में सुधार होगा एक प्रदर्शन में सुधार प्रदान करता है पढ़ रहा हूँ, एक अभिव्यक्ति कई बार का मूल्यांकन किया जाता है कि केवल एक बार विश्लेषण किया जाएगा के बाद से ?
(define (analyze-if exp)
(let ((pproc (analyze (if-predicate exp)))
(cproc (analyze (if-consequent exp)))
(aproc (analyze (if-alternative exp))))
(lambda (env)
(if (true? (pproc env))
(cproc env)
(aproc env)))))
मुझे समझ नहीं आता क्यों किताब का कहना है कि analyze
केवल एक बार चलेंगे:
(define (eval exp env)
((analyze exp) env))
यहाँ एक analyze
समारोह पुस्तक में दी गई है। eval
का शरीर नहीं है, जो ((analyze exp) env))
है मूल रूप से कहते हैं कि प्रत्येक बार eval
कहा जाता है, analyze
को इसके पैरामीटर के रूप में exp
के साथ बुलाया जाएगा? इसका मतलब यह होगा कि analyze
हर बार eval
कहा जाता है।
मेरी समझ में क्या गलत है? मैं किसी भी प्रतिक्रिया की सराहना करता हूं, धन्यवाद!