SML और श्रेणी सिद्धांत में फंक्शनलर्स के बीच क्या संबंध है?


24

इस जवाब में लेडी बाउर के इस कथन के समान ही सोच है

हास्केल समुदाय ने श्रेणी सिद्धांत से प्रेरित कई तकनीकों का विकास किया है, जिनमें से भिक्षुओं को सबसे अच्छी तरह से जाना जाता है लेकिन उन्हें भिक्षुओं के साथ भ्रमित नहीं होना चाहिए ।

बीच का रिश्ता क्या है functors एसएमएल में और functors श्रेणी सिद्धांत रूप में?

चूंकि मुझे अन्य भाषाओं जैसे हास्केल या ओकेएमएल में फंक्शनलर्स के विवरण के बारे में नहीं पता है, अगर मूल्य की जानकारी है, तो कृपया अन्य भाषाओं के लिए अनुभाग भी जोड़ें।


1
आप एक निश्चित उत्तर के लिए डेव मैकक्वीन को ईमेल करने की कोशिश कर सकते हैं , मुझे लगता है।
गिलेस एसओ- बुराई को रोकना '

जवाबों:


14

श्रेणियां एक (बड़ी) श्रेणी बनाती हैं, जिनकी वस्तुएं (छोटी) श्रेणियां होती हैं और जिनके आकार छोटे वर्गों के बीच फ़ंक्शंस होते हैं। इस अर्थ में श्रेणी सिद्धांत में रूपांतरणकर्ता "उच्च आकार आकारिकी" हैं।

शब्द के स्पष्ट अर्थों में ML फंक्शंस फंक्शनल नहीं होते हैं। लेकिन वे एक प्रकार के सिद्धांत में "उच्च आकार के कार्य" हैं।

एक सामान्य प्रोग्रामिंग भाषा में ठोस डेटाटाइप्स को "छोटा" समझें। इस प्रकार int, bool, int -> int, आदि छोटे हैं, जावा में कक्षाएं, छोटे हैं के रूप में सी में अच्छी तरह से structs हम कहा जाता है एक बड़ा संग्रह में सभी डेटाटाइप्स एकत्र कर सकते हैं Type। एक प्रकार का कंस्ट्रक्टर, जैसे कि listया arrayसे एक फ़ंक्शन Typeहै Type। तो यह एक "बड़ा" फ़ंक्शन है। एक एमएल फ़ंक्टर सिर्फ एक और अधिक जटिल बड़ा कार्य है: यह एक तर्क के रूप में कई छोटी चीज़ों को स्वीकार करता है और यह कई छोटी चीज़ों को वापस करता है। "कई छोटी चीजों को एक साथ रखा जाता है" एमएल में संरचना के रूप में जाना जाता है । मार्टिन-लोफ प्रकार के सिद्धांत के संदर्भ में हमारे पास छोटे प्रकार का एक ब्रह्मांड Type है। बड़े प्रकार को आमतौर पर प्रकार कहा जाता है । तो हमारे पास:

  1. मान प्रकार के तत्वों (उदाहरण: कर रहे हैं 42 : int)
  2. प्रकार के तत्व हैं Type(उदाहरण: int : Type)
  3. एमएल हस्ताक्षर प्रकार (उदाहरण: कर रहे हैं OrderedType)
  4. प्रकार कंस्ट्रक्टर्स प्रकार के तत्वों (उदाहरण: कर रहे हैं list : Type -> Type)
  5. एमएल stuctures प्रकार के तत्वों (उदाहरण: कर रहे हैं String : OrderedType)
  6. एमएल functors प्रकार के बीच कार्यों (उदाहरण: कर रहे हैं Map.Make : Map.OrderedType -> Make.S)

अब हम ML और श्रेणियों के बीच एक सादृश्य आकर्षित कर सकते हैं, जिसके तहत फंक्शंस को फंक्शनलर्स के अनुरूप बनाते हैं। लेकिन हम यह भी नोटिस करते हैं कि एमएल में डेटाेटिप्स "मोर्फिज़्म के बिना छोटी श्रेणियों" की तरह हैं, दूसरे शब्दों में वे श्रेणियों की तुलना में अधिक सेट की तरह हैं। हम एमएल और सेट सिद्धांत के बीच एक सादृश्य का उपयोग कर सकते हैं:

  1. डेटाटाइप्स सेट की तरह होते हैं
  2. प्रकार सेट-थियोरेटिक कक्षाओं की तरह हैं
  3. फंक्शनलर्स वर्ग-आकार के कार्यों की तरह हैं

15

एक मानक एमएल संरचना एक बीजगणित के समान है । इसके हस्ताक्षर समान आकार के बीजगणित के एक पूरे वर्ग का वर्णन करते हैं ।

एक मानक एमएल फ़ंक्ज़र, बीजगणित के वर्ग से दूसरे वर्ग के बीजगणित का मानचित्र है। उदाहरण के लिए, उपमाओं के साथ एक सादृश्य हैF:MonGrpF:AbRnजी

इनमें से अधिकांश विचारों को बर्स्टल और गोगुएन द्वारा DLEPP पृष्ठ पर CLEAR (संदर्भ c5 और c6 ) नामक एक विशिष्ट भाषा को डिजाइन करने में पेपर की श्रृंखला में काम किया गया था। डेविड मैकक्वीन उस समय बर्स्टल और सनेला के साथ संयुक्त रूप से काम कर रहे थे, और अंतरंग रूप से परिचित थे। मुद्दों के साथ। मानक एमएल मॉड्यूल प्रणाली इन विचारों पर आधारित है।

ज्यादातर लोगों को आश्चर्य होगा कि आकारिकी के बारे में क्या है? श्रेणी सिद्धांतवाचक क्रियाकलापों में एक वस्तु भाग और एक आकारिकी भाग होता है। क्या मानक एमएल फंक्शनलर्स समान हैं? जवाब हां और नहीं है।

  • उत्तर का हां भाग लागू होता है यदि संरचनाएं पहले क्रम में हैं। फिर, एक ही हस्ताक्षर के विभिन्न संरचनाओं के बीच समरूपताएं हैं, और मानक एमएल फंक्शनलर्स स्वचालित रूप से परिणाम हस्ताक्षर के समरूपता के लिए उन्हें मैप करते हैं।
  • उत्तर का कोई हिस्सा तब लागू होता है जब संरचनाओं में उच्च-क्रम संचालन होता है।

क्या इसका मतलब है कि मानक एमएल श्रेणी के सिद्धांत से भटक रहा है? मुझे ऐसा नहीं लगता। मुझे लगता है कि मानक एमएल सही काम कर रहा है, और श्रेणी सिद्धांत अभी तक पकड़ नहीं है। श्रेणी सिद्धांत अभी तक नहीं जानता है कि उच्च-क्रम के कार्यों से कैसे निपटना है। किसी दिन, यह होगा।


"श्रेणी सिद्धांत अभी तक नहीं जानता है कि उच्च-क्रम के कार्यों से कैसे निपटना है।" Thats एक और सवाल की तरह लगता है क्योंकि मुझे लगा कि श्रेणी सिद्धांत एक नींव के रूप में यह सब कर सकता है।
गाय कोडर

2
T(X)=[XX]twiceX=T(X)T(X)

मैंने वास्तव में इसे एक वास्तविक प्रश्न बनाया है ।
गाइ कोडर

"एक मानक एमएल संरचना एक बीजगणित के समान है "। क्या फिगर्स उससे थोड़ा अधिक सामान्य नहीं हैं? कुछ भी नहीं असंबंधित वस्तुओं (प्रकार, मूल्यों और कार्यों) शामिल करने के लिए एक संरचना को रोकता है, यानी। बीजगणित का गठन नहीं करना।
दीदी

2
@didierc बीजगणित के लिए एक हस्ताक्षर में एक या अधिक प्रकार होते हैं (जैसे हमारे प्रकार), और एक या एक से अधिक ऑपरेशन (जैसे हमारे कार्य) और वैकल्पिक रूप से कुछ स्वयंसिद्ध (हमारे विनिर्देशों की तरह)। एक बीजगणितहस्ताक्षर के लिए उन प्रकारों के लिए विशेष रूप से सेट चुनता है, और उन कार्यों के लिए विशेष कार्य करता है, जैसे कि स्वयंसिद्ध संतुष्ट हैं। SML हस्ताक्षर और संरचनाएं ठीक ऐसी चीजें हैं, सिवाय इसके कि SML उच्च-क्रम संचालन की अनुमति देता है जबकि बीजगणित नहीं करता है।
उदय रेड्डी

3

मेरी जानकारी के अनुसार, वहाँ है, के बीच कोई औपचारिक संबंध functors श्रेणी में सिद्धांत और functors एमएल में (एसएमएल या OCaml, वे पास पर्याप्त हमारे उद्देश्य के लिए कर रहे हैं यहाँ)।

श्रेणी सिद्धांत में, फंक्शनलर्स फ़ंक्शन हैं जो ऑब्जेक्ट्स पर काम करते हैं। वे आकारिकी से एक स्तर ऊपर हैं, जो अक्सर ऐसे कार्य हैं जो तत्वों पर काम करते हैं (कई श्रेणियों में ऐसी वस्तुएं हैं जो कुछ बीजीय संरचना और तीर जो इन संरचनाओं के बीच समरूपता हैं) के साथ सेट होती हैं। एक एमएल फ़ंक्टर एक फ़ंक्शन है जो मॉड्यूल पर संचालित होता है, जो मुख्य भाषा मूल्यों पर काम करने वाले कार्यों से एक स्तर ऊपर होता है। मुझे लगता है कि समानता यहां रुकती है।

एमएल फंक्शंस को डेव मैक्क्वीन द्वारा 1985 में अपने मॉड्यूल ऑफ स्टैंडर्ड एमएल (सिटिसरेक्स) में संशोधन के लिए बपतिस्मा दिया गया था, जो पॉलीमॉर्फिज़्म न्यूज़लैटर में दिखाई दिया था (मूल पेपर ने "पैरामीट्रिक मॉड्यूल" अभिव्यक्ति का उपयोग किया था - बाद में सार्वजनिक रूप से विशेषण "पैरामीरिड" का उपयोग करते हैं)। दुर्भाग्य से, मैं उस कागज की एक प्रति नहीं ढूँढ सकता। अपने 1986 के पेपर में डिपेंडेंट टाइप्स टू एक्सप्रेस मोड्यूलर स्ट्रक्चर (सिट्रीसेक्स) का उपयोग करके वह नाम को स्थापित करता है।


2
फ़नकार ऑब्जेक्ट्स पर केवल फ़ंक्शंस नहीं हैं, वे आकृति विज्ञान को भी मैप करते हैं। फ़नकार "श्रेणियों के बीच आकारिकी" हैं।
एंड्रेज बॉयर

@AndrejBauer हां, फंक्शंस ऑब्जेक्ट पर फ़ंक्शंस हैं। वस्तुओं पर प्रत्येक फ़ंक्शन एक फ़नकार नहीं है, लेकिन यहां एक माध्यमिक विचार है।
गिल्स एसओ- बुराई को रोकना '
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.