एक में सैद्धांतिक कंप्यूटर विज्ञान साइट में पिछले जवाब , मैंने कहा कि श्रेणी सिद्धांत प्रकार सिद्धांत के लिए "नींव" है। यहां, मैं कुछ और मजबूत कहना चाहूंगा। श्रेणी सिद्धांत प्रकार सिद्धांत है । इसके विपरीत, प्रकार सिद्धांत श्रेणी सिद्धांत है । मुझे इन बिंदुओं पर विस्तार करने दें।
श्रेणी सिद्धांत प्रकार सिद्धांत है
f:A→BABf
ABf
प्रकार सिद्धांत श्रेणी सिद्धांत है
"प्रकार सिद्धांत," से मेरा मतलब है कि किसी भी प्रकार की टाइप की गई औपचारिक भाषा, जो अवधि-गठन के कठोर नियमों पर आधारित है, जो यह सुनिश्चित करती है कि सब कुछ प्रकार की जाँच करें। यह पता चला है कि, जब भी हम ऐसी भाषा में काम करते हैं, हम एक श्रेणी-सिद्धांतिक संरचना में काम कर रहे हैं। यहां तक कि अगर हम सेट-थ्योरैटिक नोटेशन का उपयोग करते हैं और सेट-थ्योरिटिक रूप से सोचते हैं, तब भी हम लेखन सामग्री को समाप्त कर देते हैं जो स्पष्ट रूप से समझ में आता है। यह एक आश्चर्यजनक तथ्य है ।
ऐतिहासिक रूप से, दाना स्कॉट इस का एहसास करने वाले पहले व्यक्ति हो सकते हैं। उन्होंने टाइप्ड (और अनकैप्ड) लैम्ब्डा कैलकुलस पर आधारित प्रोग्रामिंग भाषाओं के सिमेंटिक मॉडल तैयार करने का काम किया। इस उद्देश्य के लिए पारंपरिक सेट-थियेट्रिक मॉडल अपर्याप्त थे, क्योंकि प्रोग्रामिंग भाषाओं में अप्रतिबंधित पुनरावृत्ति शामिल है जिसमें सिद्धांत की कमी है। स्कॉट ने प्रोग्रामिंग मॉडल पर कब्जा करने वाले सिमेंटिक मॉडल की एक श्रृंखला का आविष्कार किया, और यह एहसास हुआ कि टाइप किए गए लैम्ब्डा कैलकुलस ने कार्टेजियन बंद श्रेणियों नामक श्रेणियों के एक वर्ग का प्रतिनिधित्व किया । बहुत सारे कार्टेशियन बंद श्रेणियां हैं जो "सेट-सिद्धांतवादी" नहीं हैं। लेकिन टाइप किए गए लैम्ब्डा कैलकुलस उन सभी पर समान रूप से लागू होते हैं। स्कॉट ने एक अच्छा निबंध लिखा था जिसका नाम था " लैम्बडा कैलकुलस के संबंधित सिद्धांत"यह बताते हुए कि क्या चल रहा है, जिसके कुछ भाग वेब पर उपलब्ध हैं। मूल लेख" टू एचबी करी: एसेज़ ऑन कॉम्बिनेटर लॉजिक, लैम्ब्डा कैलकुलस एंड फॉर्मेलिज्म ", अकादमिक प्रेस, 1980 में प्रकाशित किया गया था। बेरी और क्यूरियन एक ही अहसास के लिए आया था, शायद स्वतंत्र रूप से। उन्होंने कार्यात्मक भाषाओं को लागू करने में इन विचारों का उपयोग करने के लिए एक श्रेणीबद्ध अमूर्त मशीन (सीएएम) को परिभाषित किया , और जिस भाषा को उन्होंने लागू किया उसे "सीएएमएल" कहा गया जो कि माइक्रोसॉफ्ट के एफ # की अंतर्निहित रूपरेखा है ।
×→Listबहुरंगी कार्यों की अवधारणा को औपचारिक रूप देने के लिए ठीक है। उन्होंने उन्हें "प्राकृतिक परिवर्तन", "प्राकृतिक" कहा, क्योंकि वे ही हैं जो आप प्रकार चर का उपयोग करके सही-सही तरीके से लिख सकते हैं। इसलिए, कोई कह सकता है कि श्रेणी सिद्धांत का आविष्कार ठीक उसी तरह किया गया, जैसा कि प्रोग्रामिंग भाषाओं के अस्तित्व में आने से पहले ही, पॉलीमॉर्फिक प्रोग्रामिंग भाषाओं को औपचारिक रूप देने के लिए किया गया था!
एक सेट-सिद्धांतवादी परंपरावादी को उन सिद्धांतों और प्राकृतिक परिवर्तनों का ज्ञान नहीं है, जो सतह के नीचे चल रहे हैं, जब वह सेट-सिद्धांत संबंधी अधिसूचनाओं का उपयोग करता है। लेकिन, जब तक वह विश्वासपूर्वक प्रकार प्रणाली का उपयोग कर रहा है, वह वास्तव में उनके बारे में जागरूक हुए बिना श्रेणीबद्ध निर्माण कर रहा है।
सभी ने कहा और किया, श्रेणी सिद्धांत प्रकार और कार्यों का सर्वोत्कृष्ट गणितीय सिद्धांत है। तो, सभी प्रोग्रामर श्रेणी सिद्धांत, विशेष रूप से कार्यात्मक प्रोग्रामर के एक बिट को सीखने से लाभ उठा सकते हैं। दुर्भाग्य से, विशेष रूप से प्रोग्रामर पर लक्षित श्रेणी के सिद्धांत पर कोई पाठ्य पुस्तकें नहीं लगती हैं। "कंप्यूटर विज्ञान के लिए श्रेणी सिद्धांत" किताबें आमतौर पर सैद्धांतिक कंप्यूटर विज्ञान के छात्रों / शोधकर्ताओं पर लक्षित होती हैं। कंप्यूटर वैज्ञानिकों के लिए बेसिक श्रेणी के सिद्धांत बेंजामिन पियर्स की पुस्तक शायद उनमें से सबसे अधिक पठनीय है।
हालांकि, वेब पर बहुत सारे संसाधन हैं, जो प्रोग्रामर पर लक्षित हैं। Haskellwiki पेज एक अच्छा प्रारंभिक बिंदु हो सकता है। पर मिडलैंड्स ग्रेजुएट स्कूल , हम पर श्रेणी सिद्धांत (दूसरों के बीच) व्याख्यान है। ग्राहम हटन के कोर्स को "शुरुआती" कोर्स के रूप में और खदान को "उन्नत" कोर्स के रूप में आंका गया था। लेकिन वे दोनों अनिवार्य रूप से एक ही सामग्री को कवर करते हैं, विभिन्न गहराई तक जा रहे हैं। दुनिया भर से किताबों और व्याख्यान नोटों पर यूनिवर्सिटी ऑफ चालर्स का एक अच्छा संसाधन पृष्ठ है। "सिगफ़ेप" का उत्साही ब्लॉग साइट प्रोग्रामर के दृष्टिकोण से बहुत अच्छी अंतर्ज्ञान प्रदान करता है।
मूल विषय जिन्हें आप सीखना चाहते हैं वे हैं:
- श्रेणियों की परिभाषा, और श्रेणियों के कुछ उदाहरण
- फंक्शनलर्स, और उनके उदाहरण
- प्राकृतिक परिवर्तन, और उनके उदाहरण
- उत्पाद, प्रतिपादक और प्रतिपादक (फ़ंक्शन स्थान), प्रारंभिक और टर्मिनल ऑब्जेक्ट की परिभाषा।
- adjunctions
- मोनाड्स, अल्जेब्रा और क्लेली श्रेणियां
मिडलैंड्स ग्रेजुएट स्कूल में मेरे अपने व्याख्यान नोट्स में पिछले एक (मोनडेस) को छोड़कर इन सभी विषयों को शामिल किया गया है। इन दिनों भिक्षुओं के लिए बहुत सारे अन्य संसाधन उपलब्ध हैं। तो यह एक बड़ा नुकसान नहीं है।
जितना अधिक आप गणित जानते हैं, उतना आसान होगा कि श्रेणी सिद्धांत सीखना आसान होगा। क्योंकि श्रेणी सिद्धांत गणितीय संरचनाओं का एक सामान्य सिद्धांत है, इसलिए परिभाषाओं का अर्थ समझने के लिए कुछ उदाहरणों को जानना उपयोगी है। (जब मैंने श्रेणी सिद्धांत सीखा, तो मुझे प्रोग्रामिंग भाषा के शब्दार्थों के अपने ज्ञान का उपयोग करके अपने स्वयं के उदाहरण बनाने पड़े, क्योंकि मानक पाठ पुस्तकों में केवल गणितीय उदाहरण थे, जिनके बारे में मुझे कुछ भी नहीं पता था।) फिर लाम्बक द्वारा शानदार पुस्तक आई। और स्कॉट ने " स्पष्ट तर्क का परिचय " कहा"कौन सी श्रेणी का सिद्धांत सिस्टम टाइप करने के लिए (जिसे वे" लॉजिक "कहते हैं)। बहुत सारे उदाहरणों को जाने बिना भी इसे टाइप सिस्टम से संबंधित करके श्रेणी सिद्धांत को समझना अब संभव है। ऊपर वर्णित बहुत सारे संसाधनों का उपयोग करता हूं। श्रेणी सिद्धांत की व्याख्या करने के लिए दृष्टिकोण।