2016-04-25 6 views
8

मैंने cats documentation में टाइपक्लास Apply और Applicative के बारे में पढ़ा। मुझे आश्चर्य है कि पुस्तकालय सिर्फ एक प्रकार की कक्षा Applicative की बजाय दो अलग-अलग प्रकार के वर्ग प्रदान करता है, जो Functor का विस्तार करेगा और ap जोड़ देगा? क्या कोई Apply का उपयोग करता है जो Applicative नहीं है?हमें आवेदन और आवेदक प्रकार के वर्गों को अलग करने की आवश्यकता क्यों है?

उत्तर

12

Applicativepure विधि प्रदान करता है, जो "अंदर आने" का एक तरीका है। अन्यथा, यद्यपि आप F[A]F[B] को परिवर्तित कर सकते हैं, के साथ या तो A => B (map के माध्यम से) या F[A => B] (ap के माध्यम से), आप एक F अंदर कुछ भी डाल करने के लिए क्षमता नहीं है। तो आप दूसरों को आपके लिए यह करने के लिए सीमित हैं।

Applicative के साथ अंतर यह है कि आप कुछ भी नहीं से शुरू कर सकते हैं।

के बाद या तो उपयोगी हो सकता है, Applicative और Apply हैं अलग typeclasses (और "नहीं, अपने हाथों से रखने के लिए, और आप दिया जाता है क्या पर कार्य करते हैं" "आप एक F में चीजों को डाल करने के लिए अधिकार दिया गया है")।

+0

धन्यवाद। मैने सोचा कि मैंने पा लिया। क्या आप 'आवेदन' का उपयोग करने का एक उदाहरण दे सकते हैं जो 'आवेदक' नहीं है (जैसा कि "अपने हाथों को बंद रखें, और जो आपको दिया गया है उस पर काम करें")? – Michael

+0

आप सभी प्रकार के मामलों की कल्पना कर सकते हैं। उदाहरण के लिए, यदि आपके पास एक त्रुटि प्रकार था जिसे आप संसाधित करना चाहते थे लेकिन आप नहीं चाहते थे कि यह कोई भी नई त्रुटियां उत्पन्न करने में सक्षम हो या किसी भी त्रुटि का उपयोग न करें जो त्रुटि संदर्भ से नहीं है, तो आप अपनी त्रुटि प्रकार को प्राप्त करना चाहते हैं एक 'लागू करें' टाइपक्लास लेकिन 'आवेदक 'नहीं। –

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