2013-01-18 32 views
52

मैं केवल प्रकार की अवधारणा से परिचित हो, तो अगर मैं अपने सवाल अच्छी तरह से तैयार नहीं कर रहा हूँ मेरे साथ सहन करने के लिए शुरू कर रहा हूँ ...मूल्य, प्रकार, प्रकार, ... अनंत अनुक्रम के रूप में?</strong></p> <pre><code>3 :: Int [1,2,3] :: [Int] ('c',True) :: (Char,Bool) </code></pre> <p><strong>प्रकार:

मान प्रकार है प्रकार है:

the type 'Int' has kind * 
the type '[Int]' also has kind * 
    but the type constructor [] has kind * -> * 
similarly, the type (Char,Bool) has kind * 
    but the type constructor (,) has kind * -> * -> * 

क्या प्रकार है?

क्या उनके पास प्रकार, या शैलियों, नस्लों या किस्में हैं?

अमूर्तता का यह अनुक्रम कितना दूर जाता है? क्या हम रुकते हैं क्योंकि हम शब्दों से बाहर निकलते हैं, या हम रोकते हैं क्योंकि आगे जाने से कोई मूल्य नहीं है? या, शायद, क्योंकि हम जल्दी से मानव संज्ञान की सीमा तक पहुंचते हैं और केवल हमारे सिर को उच्च-शैली वाले प्रकारों के चारों ओर लपेट नहीं सकते हैं?

एक संबंधित प्रश्न: भाषाएं मूल्य बनाने के लिए हमें मूल्य-रचनाकार (एक विपक्षी ऑपरेटर की तरह) देती हैं। भाषाएं हमें प्रकार बनाने के लिए (,) या [] जैसे प्रकार-रचनाकार भी देती हैं। क्या ऐसी कोई भाषाएं हैं जो प्रकार बनाने के लिए दयालु रचनाकारों का पर्दाफाश करती हैं?

एक और एज केस जो मैं उत्सुक हूं: हमारे पास स्पष्ट रूप से एक प्रकार है जिसका कोई मूल्य नहीं है, जिसे "नीचे का प्रकार" कहा जाता है। क्या कोई ऐसा प्रकार है जिसमें कोई प्रकार नहीं है: नीचे की तरह?

+2

'[int]' just '*' की तरह नहीं है, जबकि यह सूची प्रकार का निर्माता है, जिसकी तरह '* -> *' है (एक प्रकार दिया गया है 'यह एक प्रकार का उत्पादन करता है' [ए ] ')? – gspr

+1

धन्यवाद @gspr I बेहतर सटीकता के लिए संपादित किया गया। – pohl

+2

आपको [एक सवाल] में दिलचस्पी हो सकती है (http://vimeo.com/42399455?t=27m40s) किसी ने डसेल हास्केल उपयोगकर्ता समूह दिवस 2012 में जोसे पेड्रो मगलहास के "अधिक अच्छी तरह से टाइप की गई" बात के बाद पूछा प्रश्न 27 मिनट, वीडियो में 40 सेकंड में पूछा जाता है। – gspr

उत्तर

30

शब्दावली type और kind अच्छी तरह से स्केल नहीं करता है। सिद्धांतकार टाइप करें क्योंकि बर्ट्रैंड रसेल ने "प्रकारों" का पदानुक्रम इस्तेमाल किया है। इसके एक संस्करण में Integer : Type 0, Type 0 : Type 1, Type 1 : Type 2, ..., Type n : Type (n+1), .... कोक और आगाडा जैसे निर्भर टाइप की गई भाषाओं में, अक्सर इन "उच्च प्रकारों" की आवश्यकता होती है।

इस तरह के स्तर Russell's paradox से बचने के लिए सहायक हैं। Type : Type का उपयोग विरोधाभास का कारण बनता है (वैकल्पिक डिजाइन के लिए Quine देखें)।

संख्याओं का उपयोग मानक आवश्यकता है जब हमें इसकी आवश्यकता होती है। कुछ प्रकार के सिद्धांतों में "संचयी प्रकार", "संचयी स्तर" या "संचयी प्रकार" की धारणा होती है जो कहती है "अगर t : Type n तब भी t : Type (n+1)"।

संचयी स्तर + "स्तर बहुरूपता" एक सिद्धांत लगभग Type : Type के रूप में लचीला है, लेकिन विरोधाभास से बचाता है। कोक ज्यादातर स्तरों को निहित करता है, हालांकि Set और Prop प्रकार Type, Type {1} : Type {2} टाइप किए गए हैं। यही है, आप आमतौर पर संख्याओं को नहीं देखते हैं, और अधिकांश समय यह सिर्फ काम करता है।

आगाडा में एक भाषा प्रज्ञा है जो स्तर बहुरूपता प्रदान करती है, और चीजों को बहुत लचीला बनाती है, लेकिन थोड़ा नौकरशाही हो सकती है (हालांकि एग्डा आमतौर पर अन्य क्षेत्रों में कोक की तुलना में कम "नौकरशाही" है)।

एक और अच्छा शब्द "ब्रह्मांड" है।

+0

देखें, इसलिए दूसरे शब्दों में 'आत्म-संदर्भितता निश्चित रूप से एक समस्या है' जैसे कि अबास्ट्रक्शन के साथ काम करना। – AndreasScheinert

+0

@ एंड्रियासचेनर्ट: नहीं। "अनौपचारिकता" एक समस्या है। प्रकार ordinals हैं और इसलिए रिकर्सन योजनाएं हैं। – nomen

6

आपको शायद ओमेगा के बारे में टिम शेर्ड का पेपर पढ़ना चाहिए, जो कि हास्केल की एक बोली है जो कि प्रकार/प्रकार/प्रकार के अनंत टॉवर के साथ है, लेकिन पूरी तरह से निर्भर प्रकारों के बिना। यह बताता है कि आप इसे क्यों चाहते हैं, और उल्लेख करते हैं कि "सॉर्ट" के ऊपर के स्तर अभ्यास में हैं (कम से कम अब तक) सीधे उपयोग नहीं किया जाता है।

+0

क्या यह पेपर कहीं यूआरएल द्वारा उपलब्ध है या क्या मुझे अपनी स्थानीय विश्वविद्यालय पुस्तकालय में ढेर के माध्यम से चढ़ना होगा? – pohl

+2

http://web.cecs.pdx.edu/~sheard/papers/SumSchNotes.ps – Rhangaun