मैं एक सरल पथरी की तलाश कर रहा हूं जो प्रतिबिंब के बारे में तर्क का समर्थन करता है , अर्थात्, चल रहे कार्यक्रमों का आत्मनिरीक्षण और हेरफेर।
वहाँ एक untyped है -calculus विस्तार है कि एक सक्षम बनाता है परिवर्तित करने के लिए एक रूप है कि वाक्य रचना हेरफेर किया जा सकता है और फिर बाद में मूल्यांकन किया जाता में -नियम?
मुझे लगता है कि पथरी के दो मुख्य अतिरिक्त शब्द हैं:
- : लेता और का प्रतिनिधित्व का उत्पादन वाक्यात्मक हेरफेर करने के लिए संशोधनीय।
- : किसी शब्द का वाक्य-विन्यास निरूपण करता है और उसका मूल्यांकन करता है।
परावर्तन का समर्थन करने के लिए, शब्दों के वाक्यविन्यास प्रतिनिधित्व की आवश्यकता होती है। यह कुछ इस तरह दिखेगा:
- एक शब्द के रूप में प्रतिनिधित्व किया जाएगा है, जहां की परिलक्षित संस्करण है ,
- शब्द , और के रूप में दर्शाया जाएगा
- को रूप में दर्शाया जाएगा ।
इस प्रतिनिधित्व के साथ, पैटर्न मिलान का उपयोग शर्तों में हेरफेर करने के लिए किया जा सकता है।
लेकिन हम एक समस्या में भागते हैं। और को पैटर्न मिलान के रूप में शब्दों के रूप में एन्कोड किया जाना चाहिए। इससे निपटना सीधा प्रतीत होता है, , और को जोड़ते हुए, लेकिन क्या मुझे इनका हेरफेर करने के लिए अन्य शर्तों को जोड़ने की आवश्यकता होगी?
ऐसे डिज़ाइन विकल्प हैं जिन्हें बनाने की आवश्यकता है। फ़ंक्शन को ऊपर से क्या करना चाहिए जो कि और के शरीर के साथ करते हैं ? शरीर को रूपांतरित करना चाहिए या नहीं?
जैसा कि मैं स्वयं प्रतिबिंब का अध्ययन करने में बहुत दिलचस्पी नहीं रखता हूं - पथरी अन्य अनुसंधान के लिए एक वाहन के रूप में काम करेगी - मैं पहिया को फिर से स्थापित नहीं करना चाहता हूं।
क्या कोई मौजूदा गणना है जो मैंने अभी वर्णित की है, उससे मेल खाती है
जहां तक मैं बता सकता हूं, मेटाली जैसे कैल्सी, एक टिप्पणी में सुझाव दिया गया है, एक लंबा रास्ता तय करना है, लेकिन वे मैच के पैटर्न को समेटने और कोड के टुकड़े को डिक्रिप्ट करने की क्षमता शामिल नहीं करते हैं जो पहले से ही बनाए गए हैं।
एक चीज जो मैं करना चाहता हूं वह निम्नलिखित है:
और फिर एक पूरी तरह से अलग अभिव्यक्ति बनाने के लिए परिणाम पर मिलान पैटर्न प्रदर्शन करते हैं।
यह निश्चित रूप से -calculus के लिए एक रूढ़िवादी विस्तार नहीं है और मेटा-थ्योरी बदसूरत होने की संभावना है, लेकिन यह मेरे आवेदन के लिए बिंदु की तरह है। मैं -abstractions को अलग करना चाहता हूं ।