यह एक दिलचस्प सवाल है! जैसा कि एंथनी का जवाब बताता है, एक गैर-निर्भर कार्यात्मक भाषा को संकलित करने के लिए सामान्य दृष्टिकोण का उपयोग कर सकता है, बशर्ते आपके पास पहले से ही टाइप-चेकिंग के लिए शर्तों का मूल्यांकन करने के लिए दुभाषिया हो ।
यह एडविन ब्रैडी द्वारा लिया गया दृष्टिकोण है। अब यह वैचारिक रूप से सरल है, लेकिन यह प्रकार की जाँच करते समय संकलन के गति लाभों को खो देता है। यह कई शिष्टाचार में संबोधित किया गया है।
सबसे पहले, एक आभासी मशीन को लागू कर सकता है जो रूपांतरण जांच करने के लिए मक्खी पर बाइट-कोड के लिए शब्दों को संकलित करता है। बिन्यामीनvm_compute
ग्रीगोइरे द्वारा Coq में लागू किए जाने के पीछे यह विचार है । जाहिरा तौर पर इस सटीक विषय पर डिर्क क्लेब्लैट द्वारा यह थीसिस भी है , लेकिन एक आभासी मशीन के बजाय वास्तविक मशीन कोड नीचे।
दूसरा, एक अधिक पारंपरिक भाषा में कोड उत्पन्न हो सकता है, जो निष्पादन पर, एक भरोसेमंद रूप से टाइप किए गए प्रोग्राम को टाइप करने के लिए आवश्यक सभी रूपांतरणों की जांच करता है। इसका मतलब है कि हम हास्केल का उपयोग कर सकते हैं, कह सकते हैं, एक एजडा मॉड्यूल की जांच करने के लिए। कोड को संकलित और चलाया जा सकता है, और यदि यह स्वीकार करता है, तो निर्भर प्रकार की भाषा में कोड को अच्छी तरह से टाइप किया जा सकता है (कार्यान्वयन और संकलक त्रुटियों को रोकना)। मैंने पहली बार Mathieu Boesflug द्वारा सुझाए गए इस दृष्टिकोण को सुना है ।
∗
ocamlopt
या GHC :-) (यह Coq और Agda दृष्टिकोण है, वैसे।)