हास्केल फ़ंक्शन संरचना पाइप और फ़िल्टर वास्तुशिल्प पैटर्न का एक उदाहरण है


9

पाइप और फिल्टर आर्किटेक्चरल पैटर्न को प्रसंस्करण तत्वों की एक श्रृंखला के रूप में परिभाषित किया गया है , ताकि प्रत्येक तत्व का आउटपुट अगले का इनपुट हो । प्रत्येक उदाहरण किसी तरह के साझा बफर के माध्यम से किए गए अंतर-प्रक्रिया या अंतर-थ्रेड कनेक्शन पर विचार करता है।

मेरे लिए, ऐसा लगता है कि हास्केल समारोह रचना एक ही कार्य कर रही है। क्या हम कह सकते हैं कि यह इस पैटर्न का एक उदाहरण है, भले ही यह केवल फ़ंक्शन ऑर्डर करने के बारे में है और कोई स्पष्ट बफर पाइप के रूप में उपयोग नहीं किया जाता है? यदि हाँ, तो क्या हम गैर-आलसी भाषा के लिए भी यही बात कह सकते हैं?

जवाबों:


8

वे जुड़े हुए हैं, लेकिन कनेक्शन (तरह) के आसपास दूसरा तरीका है।

एक उपयुक्त श्रेणी में मोर्फिज़्म रचना दोनों फ़ंक्शन रचना (जहाँ श्रेणी Setएक सख्त भाषा के लिए और CPOएक आलसी भाषा के लिए है) और प्रक्रिया रचना (जहाँ श्रेणी (AFAIK, अनाम) श्रेणी) है जहाँ ऑब्जेक्ट स्ट्रिंग्स, मॉर्फिज़्म हैं प्रक्रियाओं, और संरचना पाइप ऑपरेटर है)। शैल प्रक्रियाओं को सामान्यता या सटीकता के नुकसान के बिना देखा जा सकता है, प्रकार के (आलसी) कार्यों के रूप में String -> WriterT String IO String, और प्रकार के शुद्ध कार्यों को String -> Stringदोषरहित रूप से और प्रकार के कार्यों से परिवर्तित किया जा सकता है String -> Identity String, इसलिए दोनों वास्तव में सिर्फ (>>=)भेस में हैं।


1
CPOश्रेणी क्या है ? मेरा गूगल-फू कमजोर है :(
एंड्रेस एफ।

3
@AndresF। की श्रेणी Complete Partial Orders।
पथरियन की लौ

2

इसमे अंतर है। पाइप और फिल्टर डेटा और डेटा कनेक्शन से निपटते हैं, जबकि हास्केल फंक्शन कंपोजिशन प्रथम श्रेणी के कार्यों से संबंधित है । प्रथम श्रेणी के कार्य ऐसे तरीके हैं जो पाइप और फिल्टर नहीं हैं।

आगे पढ़ना
कार्यात्मक प्रोग्रामिंग के संदर्भ में रचनाशीलता का क्या मतलब है?


1
रचना जरूरी नहीं कि प्रथम श्रेणी के कार्यों से निपटें, क्योंकि रचना अपने आप में प्रथम श्रेणी का कार्य है। उदाहरण के लिए फ़ंक्शन की संरचना को लें ++, जहां रचना है ., ++ . ++एक मान लेगा और उस मूल्य को दो बार बढ़ाता है, लेकिन ++प्रथम श्रेणी का फ़ंक्शन नहीं है, यह केवल एक मान लेता है और एक मान लौटाता है। रचना फ़ंक्शन प्रथम श्रेणी फ़ंक्शन है जो दो फ़ंक्शन लेता है और एक रिटर्न देता है।
जिमी हॉफ

1
@ जिमीहॉफ, मुझे लगता है कि आप 'प्रथम श्रेणी के समारोह' की धारणा को 'उच्च-क्रम समारोह' के साथ भ्रमित कर रहे हैं। जब किसी भाषा में 'प्रथम श्रेणी के कार्य' होते हैं, तो वह उसी प्रकार कार्य करती है जैसे वह अन्य प्रथम श्रेणी के डेटा प्रकारों के साथ व्यवहार करती है; उन्हें पारित किया जा सकता है और फ़ंक्शन से लौटाया जा सकता है, डेटा संरचनाओं में संग्रहीत किया जा सकता है, आदि। उच्च-क्रम फ़ंक्शन फ़ंक्शन मापदंडों और / या फ़ंक्शन मानों को वापस करके फ़ंक्शन की प्रथम श्रेणी की प्रकृति का लाभ उठाता है।
लेवी पियर्सन

@LeviPearson हाँ, जब मैं सुबह उठता हूँ तो मैंने गलती से अपना मस्तिष्क बग़ल में रख दिया होता है। यदि आप P.SE के लिए अच्छी सामग्री लिखने के लिए इधर-उधर ताकते रहते हैं, P.SEs की सामान्य बातचीत
जिमी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.