एक साल पहले a related discussion on haskell-cafe था। Reddit comments में मैंने एक प्राकृतिक परिवर्तन (g
) के प्राकृतिक परिवर्तन (g
) के an example को एक आवेदक फंक्चर मॉर्फिज्म (यानी, गैब्रियल गोंजालेज का उल्लेख किया है) को पूरा करता है लेकिन यह एक मोनड मॉर्फिज्म नहीं है (यह संबंधित अतिरिक्त कानून को संतुष्ट नहीं करता है >>=
)। तो, एएमपी के साथ भी दुनिया में, ApplicativeIO m
और MonadIO m
वास्तव में अलग-अलग चीजें हैं, भले ही m
Monad
है!
एक आदर्श दुनिया में आप इस तरह एक सेटअप होगा:
class Functor f => FunctorIO f where
liftIO :: IO a -> f a
-- such that liftIO is a natural transformation (automatic, by parametricity)
class (Applicative f, FunctorIO f) => ApplicativeIO f where
-- ... and liftIO is an applicative functor morphism
class (Monad f, ApplicativeIO f) => MonadIO f where
-- ... and liftIO is a monad morphism
और जादुई परियों वास्तव में ApplicativeIO
और MonadIO
उदाहरणों को परिभाषित करेगा जब इसी कानून संतुष्ट थे।
स्रोत
2014-09-27 00:55:40
मुझे लगता है कि 'मोनाद' बाधा को आराम देने पर विचार करना उचित है। –
यदि लोग सोच रहे हैं, तो कानून 'लिफ्टएआईओ (शुद्ध आर) = शुद्ध आर' और 'लिफ्टएआईओ (एफ <*> एक्स) = लिफ्टएआईओ एफ <*> लिफ्टएआईओ x' –
मुझे लगता है कि सवाल का जवाब है" क्या हैकेज में कहीं कहीं है Monadio के लिए समान टाइपक्लास लेकिन आवेदन के लिए? " "नहीं" (मुझे कम से कम कुछ भी नहीं मिला), लेकिन इसका मतलब यह नहीं है कि @ गैब्रियल गोंज़ालेज़ किसी बिंदु पर इसके बारे में ब्लॉग पोस्ट नहीं लिखेंगे। – bheklilr