ठीक है, मैं हास्केल मोनाड्स का अध्ययन कर रहा हूं। जब मैंने विकीबूक Category theory आलेख पढ़ा, तो मैंने पाया कि मोनैड मॉर्फिज़्म का हस्ताक्षर तर्क में tautologies की तरह दिखता है, लेकिन आपको M a
से ~~A
में कनवर्ट करने की आवश्यकता है, यहां ~
तर्क अस्वीकृति है।क्या कोई चीज़ "सेमी-मोनैड" या "काउंटर-मोनड" कहती है?
return :: a -> M a -- Map to tautology A => ~~A, double negation introduction
(>>=) :: M a -> (a -> M b) -> M b -- Map to tautology ~~A => (A => ~~B) => ~~B
अन्य कार्यों को भी tautologies है:
fmap :: (a -> b) -> M a -> M b -- Map to (A => B) -> (~~A => ~~B)
join :: M (M a) -> M a -- Map to ~~(~~A) => ~~A
यह भी समझ में आ जाता है कि तथ्य यह है कि सामान्य कार्यात्मक भाषाओं के Curry-Howard पत्राचार सहज ज्ञान युक्त तर्क, नहीं शास्त्रीय तर्क है, इसलिए हम उम्मीद नहीं कर सकते के अनुसार ~~A => A
जैसे टॉटोलॉजी में पत्राचार हो सकता है।
लेकिन मैं कुछ और सोच रहा हूं। क्यों मोनाड केवल दोहरी निषेध से संबंधित हो सकता है? एकल अस्वीकृति का पत्राचार क्या है? यह मैं निम्नलिखित वर्ग परिभाषा के लिए नेतृत्व:
class Nomad n where
rfmap :: (a -> b) -> n b -> n a
dneg :: a -> n (n a)
return :: Nomad n => a -> n (n a)
return = dneg
(>>=) :: Nomad n => n (n a) -> (a -> n (n b)) -> n (n b)
x >>= f = rfmap dneg $ rfmap (rfmap f) x
यहाँ मैं एक अवधारणा "नोमैड" कहा जाता है परिभाषित है, और यह दो आपरेशन (दोनों सहज ज्ञान युक्त तर्क में एक तर्क स्वयंसिद्ध से संबंधित) का समर्थन करता है। "Rfmap" नाम का ध्यान दें, इसका अर्थ यह है कि इसका हस्ताक्षर फ़ैक्टर के fmap
के समान है, लेकिन परिणामस्वरूप a
और b
के क्रम में उलट दिया गया है। अब मैं उनके साथ मोनाड ऑपरेशंस को फिर से परिभाषित कर सकता हूं, M a
से n (n a)
को प्रतिस्थापित कर सकता हूं।
तो अब सवाल प्रश्न पर जाएं। तथ्य यह है कि मोनाद श्रेणी सिद्धांत से अवधारणा का मतलब है कि मेरा "नोमाड" एक श्रेणी सिद्धांत अवधारणा भी है। तो यह क्या है? क्या यह उपयोगी है? क्या इस विषय में कोई कागजात या शोध परिणाम मौजूद हैं?
'rfmap' [contravariant functors] पर एक ऑपरेशन है (http://hackage.haskell.org/packages/archive/contravariant/latest/doc/html/Data-Functor-Contravariant.html)। – shachaf
आपके प्रश्न के शीर्षक ने पूछा कि क्या "सेमी-मोनैड" है, लेकिन आपका वास्तविक प्रश्न एक अलग दिशा में चला गया। पूर्णता के हित में यह शायद ध्यान दिया जाना चाहिए कि "अर्ध-मोनैड" एक मोनैड को संदर्भित कर सकता है जिसमें यूनिट ऑपरेशन नहीं है (यानी, हास्केल में, एक अच्छी तरह से परिभाषित नहीं है 'वापसी :: a -> m ए '), या जिसका यूनिट ऑपरेशन यूनिट के रूप में व्यवहार नहीं करता है, उदाहरण के लिए,' (वापसी x) >> = f =/= f x '। यह एक 'अर्ध-समूह' की धारणा को एक इकाई (या अच्छी तरह से व्यवहार इकाई) के बिना एक monoid होने की धारणा समानांतर करता है। – dorchard
जब मैं "सेमी-मोनैड" कहता हूं तो मेरा मतलब यह है कि 'नोमाड' 'मोनाद' का आधा दिखता है, क्योंकि 'एन (एन ए)' एक अच्छी तरह परिभाषित 'मोनाड' है। –