उद्धरण विकिपीडिया (इस उदाहरण और अधिक या कम के प्रकार और बेंजामिन सी पियर्स द्वारा प्रोग्रामिंग भाषाएं से बाहर नकल की जाती है):
एक Combinator एक उच्च क्रम समारोह केवल समारोह आवेदन का उपयोग करता है और पहले परिभाषित संयोजकों को इसके तर्कों से परिणाम परिभाषित करने के लिए परिभाषित किया गया था।
अब इसका क्या अर्थ है? इसका मतलब है कि एक संयोजक एक कार्य है (आउटपुट पूरी तरह से इसके इनपुट द्वारा निर्धारित किया जाता है) जिसका इनपुट एक फ़ंक्शन को तर्क के रूप में शामिल करता है।
ऐसे कार्य क्या दिखते हैं और उनका उपयोग किस प्रकार किया जाता है? यहाँ कुछ उदाहरण हैं:
(f o g)(x) = f(g(x))
यहाँ o
एक Combinator कि 2 काम करता है, f
और g
में लेता है, और उसके परिणाम, g
, अर्थात् f o g
साथ f
की संरचना के रूप में एक समारोह देता है।
तर्क को छिपाने के लिए कॉम्बिनेटर्स का उपयोग किया जा सकता है। मान लें कि हमारे पास डेटा प्रकार NumberUndefined
है, जहां NumberUndefined
संख्यात्मक मान Num x
या एक मान Undefined
पर ले सकता है, जहां x
a Number
है। अब हम इस नए संख्यात्मक प्रकार के लिए अतिरिक्त, घटाव, गुणा, और विभाजन बनाना चाहते हैं। अर्थशास्त्र Number
के समान हैं, सिवाय Undefined
एक इनपुट है, आउटपुट Undefined
भी होना चाहिए और 0
संख्या से विभाजित होने पर आउटपुट भी Undefined
है।
Undefined +' num = Undefined
num +' Undefined = Undefined
(Num x) +' (Num y) = Num (x + y)
Undefined -' num = Undefined
num -' Undefined = Undefined
(Num x) -' (Num y) = Num (x - y)
Undefined *' num = Undefined
num *' Undefined = Undefined
(Num x) *' (Num y) = Num (x * y)
Undefined /' num = Undefined
num /' Undefined = Undefined
(Num x) /' (Num y) = if y == 0 then Undefined else Num (x/y)
सूचना कैसे सब Undefined
इनपुट मानों के विषय में एक ही तर्क है:
एक के रूप में नीचे थकाऊ कोड लिख सकते हैं। केवल विभाजन थोड़ा और करता है। समाधान इसे एक संयोजक बनाकर तर्क निकालना है।
comb (~) Undefined num = Undefined
comb (~) num Undefined = Undefined
comb (~) (Num x) (Num y) = Num (x ~ y)
x +' y = comb (+) x y
x -' y = comb (-) x y
x *' y = comb (*) x y
x /' y = if y == Num 0 then Undefined else comb (/) x y
यह तथाकथित Maybe
इकाई है कि प्रोग्रामर हास्केल तरह कार्यात्मक भाषाओं में का उपयोग करने में सामान्यीकृत किया जा सकता है, लेकिन मैं वहाँ नहीं जाना होगा।
मैं dreamsongs एक से कुछ थोड़ा और परिचयात्मक के लिए उम्मीद की गई थी। हो सकता है कि वे किस समस्या को संबोधित करते हैं आदि के बारे में कुछ और प्रेरणा के साथ – interstar