संभावित मुद्दों पर मूल्यांकन पर mathematica दस्तावेज में होल्ड भीतर एक स्तर से परे मूल्यांकन का कहना है:मेथेमेटिका
केवल पहले स्तर पर काम करता है मूल्यांकन, सीधे एक आयोजित समारोह
मेथेमेटिका क्यों अंदर क्या यह सीमा है? तो अगर मैं एक से अधिक स्तर के साथ एक अभिव्यक्ति है इस सरल उदाहरण लेते हैं:
होल्ड [प्लस [प्लस [2, 2], 2]]]
अब मान लीजिए कि मैं देखना क्या जवाब देने के लिए है चाहता हूँ दूसरा प्लस, इसके नीचे के स्तर पर कुछ भी मूल्यांकन किए बिना। मैंने अलग-अलग चीजों की कोशिश की है जैसे:
In[290]:= Hold[Plus[Evaluate[Plus[2, 2]], 2]]
Out[290]= Hold[Evaluate[2+2]+2]
In[287]:= Hold[Plus[ReleaseHold[Hold[Plus[2, 2]]], 2]]
Out[287]= Hold[ReleaseHold[Hold[2+2]]+2]
पहला होल्ड इस मामले में पहले स्तर पर और उसके बाद सबकुछ अनचाहे रखता है। लक्ष्य लगातार होल्ड, ReleaseHold का उपयोग कर बाहरी एक के लिए सबसे भीतरी नेस्टेड समारोह से प्रत्येक चरण में एक अभिव्यक्ति के मूल्यांकन को नियंत्रित करने और कार्यों का मूल्यांकन करें कि प्राप्त करने के लिए है। मुझे लगता है मैं यह देखने के लिए कि क्या एक अभिव्यक्ति में एक स्तर से परे होता है, लेकिन वह अलग है और कभी कभी लंबे समय तक भाव के साथ पढ़ने के लिए जटिल है ट्रेस इस्तेमाल कर सकते हैं पता है।
ऐसा लगता है एक ही रास्ता निकालने के लिए और पूरी तरह से निकालें, भाग या स्तर का उपयोग कर सूचियों में अभिव्यक्ति विघटित है की तरह; अभिव्यक्ति के हिस्से का मूल्यांकन करें जो मैं चाहता हूं; फिर प्रत्येक चरण के लिए एक साथ वापस अभिव्यक्ति का पुनर्निर्माण और पुन: मानचित्रण करें। वहाँ किसी भी अन्य तरीकों या इस मैं विचार कर सकते हैं प्राप्त करने के लिए कार्य करता है?
संपादित करें: यह एक बेहतर उदाहरण पहले पकड़ जारी करने की दृष्टिकोण को देखने के लिए हो सकता है। अभिव्यक्ति के साथ:
Hold[Plus[Plus[2, Plus[2,2]], 2]]]
आप पहली बार पकड़ जारी है और तीसरे प्लस पर एक अभिव्यक्ति में एक उच्च स्तर पर रोक जगह, इस तरह देखने के लिए हैं:
in = Plus[Plus[2, Hold[Plus[2,2]]], 2]]]
out = Hold[2+2]+4
आप पाते हैं कि मेथेमेटिका होगा जब आप वास्तव में प्रतीक्षा करना चाहते हैं तो पृष्ठभूमि में निम्न स्तर का मूल्यांकन करें।
संबंधित प्रश्न: http://stackoverflow.com/questions/1616592/hold-defer-etc – dreeves