2012-10-06 17 views
11

की SICP के पर्यावरण मॉडल के संदर्भ में गतिशील scoping SICP की Section 3.2.2 कोड का निम्न भागमूल्यांकन

(define (square x) 
    (* x x)) 
(define (sum-of-squares x y) 
    (+ (square x) (square y))) 
(define (f a) 
    (sum-of-squares (+ a 1) (* a 2))) 

(f 5) 

इस चित्र के रूप में समझाया जाता है के निष्पादन में बनाम शाब्दिक:

हर बार जब कोई फ़ंक्शन लागू होता है, तो एक नया फ्रेम बनाया जाता है (E1 द्वारा E4 के माध्यम से लेबल किया गया) जो प्रतीकों और मानों के बीच बाइंडिंग का एक सेट दर्शाता है। जब एक फ्रेम एक फ्रेम में बंधे नहीं है, तो उस फ्रेम के संलग्न वातावरण को उस विशेष प्रतीक के बाध्यकारी के लिए पूछताछ की जाती है।

इस आरेख के बारे में दिलचस्प बात यह है कि E द्वारा लेबल किए गए सभी फ्रेम वैश्विक वातावरण में निहित हैं। पाठ बताते हैं कि इस वजह से कार्यों वैश्विक वातावरण में परिभाषित किया गया था, लेकिन इस मुद्दे पर विस्तार से बता नहीं करता है:

सूचना है कि वैश्विक पर्यावरण के लिए square अंक के द्वारा बनाई गई प्रत्येक फ्रेम, के बाद से इस माहौल ने संकेत दिया है square प्रक्रिया वस्तु।

, तो इसके बजाय फ्रेम जहां वातावरण में निहित है कि समारोह में बुलाया गया था कहते हैं E3E2 में निहित थी जो बारी में E1 में निहित किया गया था, कि कैसे एक गतिशील scoped भाषा कृत्यों का एक मान्य मॉडल हो सकता है? साथ ही, इस तरह से आरेख में फ्रेम समान 'पैरेंट' वातावरण है क्योंकि योजना को स्पष्ट रूप से स्कॉप्ड किया गया है?

उत्तर

5

दोनों प्रश्नों का उत्तर हाँ है। एसआईसीपी का वह अध्याय वास्तव में शब्द का उपयोग किए बिना व्याख्यात्मक दायरे को समझा रहा है। आपके द्वारा वर्णित मूल्यांकन तंत्र को बदलना गतिशील रूप से स्कॉप्ड मॉडल बनाएगा।

संबंधित मुद्दे