2016-08-18 12 views
7

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

निम्नलिखित जानबूझकर वर्बोज़ है, पुलबैक (p, p1, p2) होना चाहिए, और (q, q1, q2) अगर चीजें ठीक से निकल देखने के लिए "परीक्षण" के खिलाफ पुलबैक करने के लिए एक गैर सार्वभौमिक वस्तु का एक उदाहरण है।

-- MY DIAGRAM, A -> B <- C 
type A = Int 
type C = Bool 
type B = (A, C) 
f :: A -> B 
f x = (x, True) 
g :: C -> B 
g x = (1, x) 

-- PULLBACK, (p, p1, p2) 
type PL = Int 
type PR = Bool 
type P = (PL, PR) 
p = (1, True) :: P 
p1 = fst 
p2 = snd 
-- (g . p2) p == (f . p1) p 

-- TEST CASE 
type QL = Int 
type QR = Bool 
type Q = (QL, QR) 
q = (152, False) :: Q 
q1 :: Q -> A 
q1 = ((+) 1) . fst 
q2 :: Q -> C 
q2 = ((||) True) . snd 

u :: Q -> P 
u (_, _) = (1, True) 
-- (p2 . u == q2) && (p1 . u = q1) 

मैं सिर्फ एक उदाहरण के साथ आने की कोशिश कर रहा था जो परिभाषा के अनुरूप है, लेकिन यह विशेष रूप से उपयोगी प्रतीत नहीं होता है। मैं वापस खींचने के लिए "देखो", या एक का उपयोग कब करूंगा?

उत्तर

8

मुझे यकीन नहीं है कि हास्केल फ़ंक्शन सबसे अच्छा संदर्भ है जिसमें पुल-बैक के बारे में बात करना है।

एक के पुल वापस ->बी और सी ->बीके सबसेट के साथ पहचाना जा सकता है एक एक्स सी, और सबसेट रिश्तों सीधे में व्यक्त नहीं कर रहे हैं हास्केल का टाइप सिस्टम। अपने विशिष्ट उदाहरण में पुल वापस एक तत्व (1, यह सच है) होगा क्योंकि एक्स = 1 और = सच केवल मान हैं जिसके लिए (एक्स) = जी (बी)।

पुल-बैक के कुछ अच्छे "व्यावहारिक" उदाहरण Category Theory for Scientists पर डेविड आई द्वारा दिए जा सकते हैं। Spivak।

रिलेशनल जॉइन कंप्यूटर विज्ञान में होने वाली पुल-बैक का आर्किटेपल उदाहरण है। क्वेरी:

SELECT ... 
FROM A, B 
WHERE A.x = B.y 

पंक्तियों के जोड़े का चयन करता है (एक, ) जहां एक तालिका एक और से एक पंक्ति है तालिका बी से एक पंक्ति और जहां है के कुछ समारोह बी के कुछ अन्य फ़ंक्शन के बराबर है। इस मामले में वापस खींचा जा रहा है एफ (ए) = ए.एक्स और जी (बी) = बी.ई

+1

आह, यह समझ में आता है। संबंधपरक भाषाओं में pushouts के लिए एक समान ऑपरेशन होगा? –

+0

क्या मूलभूत समस्या नहीं है कि हैस्केल को उस विशेष आरेख को व्यक्त करने का कोई तरीका नहीं है, बजाय सबसेट के साथ कुछ भी करने के बजाय? मुझे आश्चर्य है कि 'TypeInType' हमें इन विचारों के बारे में बात करने के लिए पर्याप्त शक्ति देता है, दर्दनाक रूप से, प्रकार के स्तर पर। – dfeuer

+0

मैं दो बार ऊपर उठाना चाहता हूं। महान उत्तर – beefyhalo

6

पुलबैक का एक और दिलचस्प उदाहरण प्रकार अनुमान में प्रकार एकीकरण है। आपको कई स्थानों से टाइप बाधाएं मिलती हैं जहां एक चर का उपयोग किया जाता है, और आप सबसे सख्त एकजुट बाधा खोजना चाहते हैं। मैं इस उदाहरण का उल्लेख my blog में करता हूं।

+1

आपका ब्लॉग एक खजाना ट्रोव है, और मैं विशेष रूप से बिल्ली से प्यार करता हूं। प्रोग्रामर के लिए सिद्धांत। धन्यवाद, और मैं इसे आने वाले हफ्तों तक इस पर जुनून लगाऊंगा जब तक कि मैं स्वतंत्र रूप से स्वतंत्र/भूलने वाले कार्यों को पकड़ नहीं पाता। मोनाड्स के लिए इंतजार नहीं कर सकता! :) –

संबंधित मुद्दे