functional programming - Associative binary operation for Option in Scala -


मुझे याद है कि मोनाद एक मोनोइड है यही है, एक सहस्राब्दी बाइनरी ऑपरेशन * है, इसलिए यदि ma और mb है monadic मान तब मा * mb भी एक मौद्रिक मूल्य है

यदि ऊपर सही है, तो स्कैला में ऑप्शन के लिए बाइनरी ऑपरेशन क्या है? उदाहरण के लिए, * में कुछ (1) * कुछ (2)

( इस उत्तर से इसकी परिभाषा चुरा ली गई है और केवल किसी न किसी प्रकार का स्पष्टीकरण देने की कोशिश करता है। श्रेणी सिद्धांत का मेरा ज्ञान बल्कि मूल है। )

T = & gt; विकल्प [टी] ) मानते हैं और नहीं मान (जैसे। < कोड> कुछ (3) या कोई नहीं )।

मानों पर एक मोनोइड के लिए एक उदाहरण के रूप में, सूची [टी]

हमारे पास एक द्विआधारी ऑपरेशन है एक ?? ¢: एस Ã ?? एस - & gt; एस :

  डीईएफ़ एपीएनडी [टी] (सूची 1: सूची [टी], सूची 2: सूची [टी]): सूची [टी] = सूची 1 ऐप लिस्ट 2   

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

अब, उपरोक्त मामले में एक ?? को इनपुट मानों के ट्यूपल को लौटने के रूप में देखा जा सकता है : <पूर्व> सूची [टी] एक ?? सूची [टी] = & gt; (सूची [टी], सूची [टी])

और हमारा अनुलग्न करें फ़ंक्शन इस इनपुट के रूप में इस टपल को प्राप्त करता है।

हालांकि, हम एक ?? को एक ???? में ट्यूप्लिंग ऑपरेशन को बदल सकता है, अब फ़ैक्टिका संरचना का अर्थ हो सकता है।

  (K = & gt; सूची [के]) एक ???? (कश्मीर = & gt; सूची [के]) = & gt; (कश्मीर = & gt; सूची [सूची [के]])   

और इसलिए, हम एक समारोह को पूरा करने के लिए देख रहे हैं μ: टी â ???? टी - & gt; टी या अधिक विशिष्ट

  (के = & gt; सूची [सूची [के]]) = & gt; (कश्मीर = & gt; सूची [के])   

यह ऑपरेशन Scala में flatten ( join हास्केल में) के रूप में जाना जाता है। मोनोइड का पहचान तत्व मोनड कन्स्ट्रक्टर है, जिसका स्कैला ( वापसी हास्केल में) में कोई सामान्य नाम नहीं है, लेकिन हर मोनद के लिए मौजूद है। उदाहरण के लिए। x = & gt; सूची (एक्स)

चीजों को लपेटने के लिए, इस प्रश्न के उत्तर और अन्य उत्तरों पर विचार करने के लिए तीन संभावनाएं हैं कि कैसे एक मोनॉड एक मोनोइड हो सकता है:

ए) प्रत्येक मोनद भी उपर्युक्त में मोनैक्टर रचना के तहत एक मोनोइड है।

बी) हर मोनद एम [टी] एक मोनोइड है, अगर एक मोनोइड भी है टी के लिए कुछ बाइनरी ऑपरेशन ~ + ~ ): के लिए {x & lt; - ma; Y & lt; - mb} उपज x ~ + ~ y

सी) कुछ मोनादों में एक या अधिक विशिष्ट मोनोइड्स हो सकते हैं जो बी में से अलग है। उदाहरण सूची एक ऐप या विकल्प एस orElse

Comments

Popular posts from this blog

c++ - why does this code produce a runtime error? -

java - Can Find the error -

maximum size of array in c -