विहित कार्यों के साथ प्रोग्रामिंग भाषाओं


29

क्या कोई क्रियात्मक (कार्यात्मक) प्रोग्रामिंग भाषाएं हैं जहां सभी कार्यों में एक विहित रूप है? अर्थात्, इनपुट के सभी सेट के लिए समान मान लौटाने वाले किसी भी दो कार्यों को उसी तरह से दर्शाया जाता है, उदाहरण के लिए यदि f (x) x + 1 लौटाया, और g (x) x + 2 लौटाया, तो f (x )) और जी (x) कार्यक्रम के संकलित होने पर अप्रत्यक्ष निष्पादन उत्पन्न करेगा।

शायद अधिक महत्वपूर्ण बात यह है कि कार्यक्रमों के कैनोनिकल प्रतिनिधित्व के बारे में मुझे और कहाँ से पता चलेगा (Googling "कैनोनिकल प्रतिनिधित्व कार्यक्रम" फलदायी से कम रहा है)? यह पूछने के लिए एक स्वाभाविक प्रश्न की तरह लगता है, और मुझे डर है कि मैं जो खोज रहा हूं, उसके लिए मुझे उचित शब्द नहीं पता है। मुझे इस बात की उत्सुकता है कि क्या ऐसी भाषा के लिए ट्यूरिंग पूर्ण होना संभव है, और यदि नहीं, तो ऐसी संपत्ति को बनाए रखने के दौरान आपके पास एक प्रोग्रामिंग भाषा कितनी स्पष्ट हो सकती है।

मेरी पृष्ठभूमि सीमित है, इसलिए मैं कम पूर्वापेक्षा वाले स्रोतों को प्राथमिकता दूंगा, लेकिन अधिक उन्नत स्रोतों के संदर्भ भी शांत हो सकते हैं, क्योंकि इस तरह से मुझे पता चल जाएगा कि मैं किस दिशा में काम करना चाहता हूं।

जवाबों:


38

यह किस हद तक संभव है यह वास्तव में लैम्ब्डा कैलकुलस के सिद्धांत में एक प्रमुख खुला प्रश्न है। यहां एक त्वरित सारांश है कि क्या जाना जाता है:

  • इकाई, उत्पादों और फ़ंक्शन स्थान के साथ बस टाइप किए गए लंबो कैलकुलस में एक सरल विहित रूपों की संपत्ति होती है। दो शर्तें समान हैं यदि और केवल यदि उनके पास एक ही बीटा-सामान्य, एटा-लंबा रूप है। इन सामान्य रूपों की गणना करना भी काफी सरल है।

  • योग प्रकारों का जोड़ मामलों को बहुत उलझा देता है। समानता की समस्या अभी भी निर्णायक है (खोज करने के लिए कीवर्ड "प्रतिपादक समानता") है, लेकिन ज्ञात एल्गोरिदम बेहद मुश्किल कारणों से काम करते हैं और मेरे ज्ञान के लिए सामान्य रूप प्रमेय पूरी तरह से संतोषजनक नहीं है। यहाँ चार दृष्टिकोण हैं जो मुझे पता है:

  • अनबाउंड प्रकारों का जोड़, जैसे कि प्राकृतिक संख्या, समस्या को अनिर्दिष्ट बनाता है। मूल रूप से, अब आप हिल्बर्ट की दसवीं समस्या को एनकोड कर सकते हैं।

  • पुनरावृत्ति के अलावा समस्या को अपरिहार्य बना देता है, क्योंकि सामान्य रूप होने से समानता निर्णायक होती है, और इससे आपको रुकने की समस्या का समाधान करने में मदद मिलेगी।


यह पेपर समरूपता के साथ समरूपता का विस्तार करता है, लेकिन "एकल" विहित रूप सिंटैक्स नहीं है, आप एक "संतृप्ति फ़ंक्शन" चुनते हैं जो यह पता लगाने के लिए पर्याप्त स्मार्ट है कि जब आप तुलना कर रहे हैं, तो आपके पास ऐसे सबटर्म हैं जो झूठे हैं। यह अहमद-लिसाटा-हार्पर के समान है जिसमें वे दोनों ध्यान केंद्रित करते हैं।
मैक्स न्यू

केवल इकाई, उत्पादों और कार्यों के साथ, किसी भी चीज़ की कार्डिनैलिटी जो आप संभवतः लिख सकते हैं, वह है 1, जबकि यदि आप रकम जोड़ते हैं, तो आपको अचानक कई अलग-अलग कार्डिनैलिटीज़ मिलते हैं (और "उपयोगी गणना" कर सकते हैं)। क्या ये तथ्य संबंधित हैं?
ग्लोबोहेरल

1
λएक्स:λy:एक्सλएक्स:λy:y
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.