यह दुर्भाग्यपूर्ण है कि इस विषय पर साहित्य बहुत घना है। मैं भी तुम्हारे जूतों में था। मुझे इस विषय का पहला परिचय प्रोग्रामिंग लैंग्वेजेस: एप्लीकेशन और इंटरप्रिटेशन से मिला
http://www.plai.org/
मैं उस अमूर्त विचार को संक्षेप में प्रस्तुत करने की कोशिश करूंगा जिसका विवरण मुझे तत्काल स्पष्ट नहीं मिला। पहले, प्रकार के अनुमानों को बनाने और फिर बाधाओं को हल करने के बारे में सोचा जा सकता है। बाधाओं को उत्पन्न करने के लिए, आप वाक्यविन्यास के पेड़ के माध्यम से पुनरावृत्ति करते हैं और प्रत्येक नोड पर एक या अधिक अवरोध उत्पन्न करते हैं। उदाहरण के लिए, यदि नोड ए है+
ऑपरेटर है, तो ऑपरेंड और परिणाम सभी संख्याओं के होने चाहिए। फ़ंक्शन को लागू करने वाले नोड में फ़ंक्शन के परिणाम के समान प्रकार होता है, और इसी तरह।
बिना किसी भाषा के let
, आप उपर्युक्त बाधाओं को आँख बंद करके प्रतिस्थापन द्वारा हल कर सकते हैं। उदाहरण के लिए:
(if (= 1 2)
1
2)
यहाँ, हम यह कह सकते हैं कि यदि कथन की स्थिति बूलियन होनी चाहिए, और यह कि यदि कथन का प्रकार उसके प्रकार then
और else
खंड के समान है। चूंकि हम जानते हैं 1
और2
संख्याएँ हैं, प्रतिस्थापन के द्वारा, हम जानते हैं कि if
कथन एक संख्या है।
जहां चीजें खराब हो जाती हैं, और जो कुछ समय के लिए मुझे समझ नहीं आ रहा था, वह चल रहा है:
(let ((id (lambda (x) x)))
(id id))
यहाँ, हम id
एक फ़ंक्शन के लिए बाध्य हैं जो आपने जो भी पास किया है उसे वापस लौटाता है, अन्यथा पहचान फ़ंक्शन के रूप में जाना जाता है। समस्या यह है कि फ़ंक्शन का पैरामीटर किस प्रकार के x
प्रत्येक उपयोग पर अलग है id
। दूसरा id
प्रकार का एक फ़ंक्शन है a -> a
, जहां a
कुछ भी हो सकता है। पहला प्रकार का है(a -> a) -> (a -> a)
। इसे लेट-पोलिमोर्फ़िज्म के रूप में जाना जाता है। एक विशेष क्रम में बाधाओं को हल करने के लिए महत्वपूर्ण है: पहले परिभाषा के लिए बाधाओं को हल करें id
। यह होगा a -> a
। फिर ताजा, id
प्रत्येक स्थान के लिए बाधाओं के प्रकार की अलग-अलग प्रतियों को प्रतिस्थापित किया जा सकता id
है, उदाहरण के लिएa2 -> a2
और a3 -> a3
।
कि ऑनलाइन संसाधनों में आसानी से समझाया नहीं गया था। वे एल्गोरिथ्म डब्ल्यू या एम का उल्लेख करेंगे, लेकिन यह नहीं कि वे बाधाओं को हल करने के मामले में कैसे काम करते हैं, या यह लेट-पॉलीमॉर्फिज्म पर रोक क्यों नहीं लगाता है: उनमें से प्रत्येक एल्गोरिदम बाधाओं को हल करने पर एक आदेश लागू करता है।
मुझे यह संसाधन अल्गोरिदम डब्ल्यू, एम, और बाधा निर्माण की सामान्य अवधारणा और सभी को एक साथ हल करने के लिए बेहद मददगार लगा। यह थोड़ा घना है, लेकिन बहुत से बेहतर है:
http://www.cs.uu.nl/research/techreps/repo/CS-2002/2002-031.pdf
कई अन्य कागजात भी अच्छे हैं:
http://people.cs.uu.nl/bastiaan/papers.html
मुझे उम्मीद है कि यह कुछ हद तक अजीब दुनिया को स्पष्ट करने में मदद करता है।