2015-12-13 7 views
6

एक आवेदक मज़ेदार f को देखते हुए, मुझे एक नया आवेदक मज़ेदार Rev ff जैसे विचारों का उलट था, लेकिन प्रभावों के क्रम के साथ। संदेश यह है:आवेदक फ्लाक्टर जो प्रभावों के क्रम को उलट देता है

import Control.Applicative 

newtype Rev f a = Rev {unRev :: f a} 

instance Functor f => Functor (Rev f) where 
    fmap f (Rev fx) = Rev (fmap f fx) 

instance Applicative f => Applicative (Rev f) where 
    pure x = Rev (pure x) 
    (Rev ff) <*> (Rev fx) = Rev (pure (\x f -> f x) <*> fx <*> ff) 

मेरे सवालों का

  1. है कि एक वैध Applicative उदाहरण (यह Applicative नियमों का पालन करता है) कर रहे हैं?
  2. इस निर्माण एक नाम है? वहाँ एक मॉड्यूल कहीं इस में छिपा है है?
+0

आप 'Backwards' अनुप्रयोगी functors में रुचि रखते हैं, तो आप' Data.Functor.Reverse', जो परतों और पीछे की ओर पार करता भी तरह। तुम भी 'tardis' राज्य ट्रांसफार्मर दिलचस्प मिल सकता है। – dfeuer

उत्तर

10

आईआरसी पर अनुकूल लोगों Backwards अनुप्रयोगी transformers पैकेज द्वारा की पेशकश की ओर इशारा किया। तुम भी (<**>) ऑपरेटर मानक पुस्तकालय में उपलब्ध पसंद कर सकते हैं।

संबंधित मुद्दे