डिफंक्शनलाइज़ेशन एक प्रोग्राम ट्रांसफ़ॉर्मेशन है जो उच्च-ऑर्डर प्रोग्राम्स को फर्स्ट-ऑर्डर प्रोग्राम्स में परिवर्तित करता है। विचार यह है कि एक कार्यक्रम दिया जाता है, केवल बहुत ही लंबो-अमूर्तियां होती हैं, इसलिए आप प्रत्येक भेड़ के बच्चे को एक आईडी के साथ बदल सकते हैं, और प्रत्येक फ़ंक्शन एप्लिकेशन को कॉल के साथ एक आवेदन प्रक्रिया जो उस आईडी पर शाखाएं देता है। यह कभी-कभी कार्यात्मक भाषाओं के लिए संकलक में उपयोग किया जाता है, लेकिन इसकी प्रयोज्यता इस तथ्य से सीमित है कि विक्षेपण एक पूरे-प्रोग्राम परिवर्तन है (आपको प्रोग्राम में सभी कार्यों को सांख्यिकीय रूप से जानना होगा), और इसलिए केवल पूरे-प्रोग्राम कंपाइलर उपयोग का उपयोग करते हैं यह।
हालाँकि, Pottier और Gauthier ने एक अधिक परिष्कृत टाइपिंग GADTs का उपयोग करके एक पॉलीमॉर्फ़िक टाइप डीफ़ेक्लिनेशन एल्गोरिथ्म दिया है। अब, उनके एन्कोडिंग को देखते हुए, उनके लैम्ब्डा डेटाटाइप में एक कैच-ऑल केस जोड़ना संभव है जो एक टैग नहीं है, लेकिन जिसमें एक उच्च-क्रम फ़ंक्शन है। इसका मतलब यह है कि मॉड्यूल-दर-मॉड्यूल आधार पर रक्षात्मक करने के लिए उनके एन्कोडिंग का उपयोग करना संभव होना चाहिए।
किसी ने भी यह किया है, और मुझे इस विचार का उपयोग करके एक संकलक की ओर इशारा करें? (खिलौना संकलक ठीक हैं, और वास्तव में पसंदीदा हैं।)