यह कुछ हद तक अस्पष्ट है, लेकिन पथरी बीजीय डेटा प्रकारों में बदल जाती है। किसी भी प्रकार के लिए, इसके एक-छेद संदर्भ का प्रकार उस प्रकार का व्युत्पन्न है। पूरे विषय के अवलोकन के लिए इस उत्कृष्ट बात को देखें । यह बहुत ही तकनीकी शब्दावली है, तो चलिए बताते हैं।
बीजगणितीय डेटा प्रकार
आप उत्पाद प्रकार (यदि ऐसा नहीं है, क्योंकि वे दो प्रकार के कार्टेशियन उत्पाद हैं) के रूप में संदर्भित किया जा रहा है । हम इसे शाब्दिक रूप से लेने जा रहे हैं और अंकन का उपयोग करेंगे:
a∗b
एक टपल का प्रतिनिधित्व करने के लिए, जहां और दोनों प्रकार हैं। इसके बाद, आप भर में आया हो सकता है योग प्रकार इन है जो या तो एक प्रकार हो सकता है प्रकार, या किसी अन्य (के रूप में जाना जाता है यूनियनों , वेरिएंट , या के रूप में या तो प्रकार (थोड़े) हास्केल में)। हम इसे भी शाब्दिक रूप से लेते हैं और अंकन का उपयोग करते हैं:ab
a+b
इन के रूप में वे कर रहे हैं, तो एक प्रकार क्योंकि नाम हैं है मूल्यों और एक प्रकार है मूल्यों, फिर प्रकार है मूल्यों।aNabNba+bNa+Nb
ये प्रकार सामान्य बीजीय अभिव्यक्तियों की तरह दिखते हैं और हम वास्तव में, उन्हें इस तरह से जोड़ सकते हैं (एक बिंदु पर)।
एक उदाहरण
कार्यात्मक भाषाओं में एक सूची की सामान्य परिभाषा (हास्केल में दी गई है) यह है:
data List a = Empty
| Cons a List
यह कहता है कि एक सूची या तो रिक्त है या एक मूल्य और दूसरी सूची का एक tuple है। बीजीय संकेतन के लिए रूपांतरण, हमें मिलता है:
L(a)=1+a∗L(a)
जहाँ एक मान (इकाई प्रकार उर्फ) के साथ एक प्रकार का प्रतिनिधित्व करता है। बार-बार डालने से हम परिभाषा प्राप्त करने के लिए इसका मूल्यांकन कर सकते हैं :1L(a)
L(a)=1+a∗L(a)
L(a)=1+a∗(1+a∗L(a))
L(a)=1+a+a2∗(1+a∗L(a))
L(a)=1+a+a2+a3∗(1+a∗L(a))
L(a)=1+a+a2+a3+a4+a5...
(जहाँ का अर्थ बार-बार गुणा करने से है।)xn
इस परिभाषा तो कहना है कि एक सूची या तो इकाई, या एक आइटम की एक टपल, या दो मदों की एक टपल है, या तीन आदि, जो की है एक सूची की परिभाषा!
एक छेद वाला कॉन्टेक्ट्स
अब एक-छेद संदर्भों पर: एक-छेद संदर्भ वह है जो आपको तब मिलता है जब आप किसी उत्पाद प्रकार का 'वैल्यू आउट' लेते हैं। आइए एक उदाहरण दें:
एक सरल 2-ट्यूपल के लिए जो सजातीय है, , अगर हम एक मूल्य निकालते हैं, तो हमें सिर्फ 1-ट्यूपल मिलता है, । लेकिन इस प्रकार के दो अलग-अलग एक-छेद संदर्भ हैं: अर्थात् टुपल का पहला और दूसरा मूल्य। इसलिए चूंकि यह इन दोनों में से एक है इसलिए हम लिख सकते हैं कि यह , जो निश्चित रूप से, । यह वह जगह है जहाँ भेदभाव खेलने के लिए आता है। आइए एक और उदाहरण के साथ इसकी पुष्टि करते हैं:a2aa+a2a
3-tuple में से एक मान लेना 2-tuple देता है, लेकिन तीन अलग-अलग प्रकार हैं:
(a,a,_)
(a,_,a)
(_,a,a)
इस पर निर्भर करता है कि हमने छेद कहाँ रखा है। यह हमें देता है जो वास्तव में का व्युत्पन्न है । इसका प्रमाण यहाँ सामान्य रूप से मिलता है ।3a2a3
हमारे अंतिम उदाहरण के लिए, आइए एक सूची का उपयोग करें:
यदि हम एक सूची के लिए अपनी मूल अभिव्यक्ति लेते हैं:
L(a)=1+a∗L(a)
हम प्राप्त करने के लिए पुनर्व्यवस्थित कर सकते हैं:
L(a)=11−a
(सतह पर यह बकवास की तरह लग सकता है, लेकिन यदि आप इस परिणाम की टेलर श्रृंखला लेते हैं तो आपको वह परिभाषा मिलती है जो हम पहले प्राप्त करते थे।)
अब यदि हम इसे अलग करते हैं, तो हमें एक दिलचस्प परिणाम मिलता है:
∂L(a)∂a=(L(a))2
इस प्रकार एक सूची सूचियों की एक जोड़ी बन गई है। यह वास्तव में समझ में आता है: उत्पादित दो सूचियाँ मूल सूची में छेद के ऊपर और नीचे के तत्वों के अनुरूप हैं!