2012-07-04 32 views
7

व्यायाम 1.5। बेन बिटकडल ने यह निर्धारित करने के लिए एक परीक्षण का आविष्कार किया है कि वह जिस दुभाषिया का सामना कर रहा है वह आवेदक-आदेश मूल्यांकन या सामान्य-आदेश मूल्यांकन का उपयोग कर रहा है। वह निम्न दो प्रक्रियाओं को परिभाषित करता है:एसआईसीपी व्यायाम 1.5

(परिभाषित (पी) (पी))

(परिभाषित (परीक्षण xy) (यदि (= एक्स 0) y))

फिर वह मूल्यांकन करता है अभिव्यक्ति

(परीक्षण 0 (पी))

क्या व्यवहार बेन एक दुभाषिया अनुप्रयोगी-आदेश मूल्यांकन का उपयोग करता है के साथ पालन करेंगे? वह दुभाषिया के साथ क्या व्यवहार करेगा जो सामान्य-आदेश मूल्यांकन का उपयोग करता है?

मैं अभ्यास के जवाब को समझता हूं; मेरा सवाल यह है कि कैसे (पी) बनाम पी बनाम है। उदाहरण के लिए, (टेस्ट 0 (पी)) दुभाषिया को लटकने का कारण बनता है (जो अपेक्षित है), लेकिन उपर्युक्त परिभाषा के साथ (परीक्षण 0 पी) तुरंत 0 का मूल्यांकन करता है। क्यों?

इसके अलावा, मान लें कि हमने परिभाषा को परिभाषित किया है (परिभाषित (पी) पी)। दी गई परिभाषा के साथ, (परीक्षण 0 (पी)) और (परीक्षण 0 पी) दोनों का मूल्यांकन 0 तक होता है। ऐसा क्यों होता है? दुभाषिया क्यों लटका नहीं है? मैं एसआईसीपी पैकेज के साथ डॉ रैकेट का उपयोग कर रहा हूं।

उत्तर

15

p एक समारोह है। (p) एक फ़ंक्शन के लिए एक कॉल है।

आपके दुभाषिया में p का मूल्यांकन करें।

p <Return> 
==> P : #function 

अब (p) का मूल्यांकन करें। सुनिश्चित करें कि आप अपने दुभाषिया को मारने के बारे में जानते हैं! (शायद वहाँ डॉ रैकेट में एक “ बंद करो ” बटन है।)

(p) 

नोट कुछ भी नहीं होता है। या, कम से कम, कुछ भी दिखाई नहीं दे रहा है। दुभाषिया दूर कताई कर रहा है, पूंछ कॉल को समाप्त कर रहा है (इसलिए, 0 मेमोरी का उपयोग करके), p पर कॉल करना।

p और (p) विभिन्न चीजों का मूल्यांकन करने के लिए, आपको विभिन्न व्यवहार की अपेक्षा करनी चाहिए।

अपने दूसरे प्रश्न के अनुसार: आप p को एक फ़ंक्शन बनने के लिए परिभाषित कर रहे हैं जो स्वयं लौटता है। दोबारा, अपने (define (p) p) के साथ p और (p) का मूल्यांकन करने का प्रयास करें और देखें कि आपको क्या मिलता है। मेरा अनुमान है (मैं एक कंप्यूटर का उपयोग कर रहा हूं जिस पर मैं कुछ भी इंस्टॉल नहीं कर सकता हूं और जिसमें कोई योजना नहीं है) यह है कि वे एक ही चीज़ का मूल्यांकन करेंगे। (मैं यह भी शर्त लगा सकता हूं कि (eq? p (p))#t का मूल्यांकन करेगा।)

+0

+1 संक्षिप्त उत्तर। Http://codepad.org भी आज़माएं। –

+0

धन्यवाद। मैं भी जवाब की तलाश में हूं। – user1166240