2015-03-27 29 views
5

स्पष्ट रूप से ((.).(.)) ऑपरेटर का सामान्य नाम (.:) है। (.:) कहां परिभाषित किया गया है? या क्या मुझे इसे खुद परिभाषित करना है?हास्केल (। :) ऑपरेटर कहां परिभाषित किया गया है?

+6

ध्यान दें कि [एफपी पूर्ण होउगल] (https://www.fpcomplete.com/hoogle?q=.%3A&env=ghc-7.8-stable-14.09) इन परिदृश्यों में बेहद सहायक है। – Sibi

+0

यदि आपके पास कोड है जो कुछ नाम का उपयोग करता है और सफलतापूर्वक 'ghci' या' कैबल प्रतिलिपि 'में लोड होता है, तो आप इसके बारे में कुछ जानकारी प्राप्त करने के लिए': i।: 'टाइप कर सकते हैं। – Heimdell

उत्तर

8

आप अन्य उच्च आदेश फ़ंक्शन रचनाओं के साथ composition लाइब्रेरी में इसे पा सकते हैं। इस ऑपरेटर को base में परिभाषित नहीं किया गया है। आप किसी निर्भरता के रूप में एक (बहुत छोटे) पैकेज में शामिल नहीं करना चाहते हैं, तो बस यह अपने आप को परिभाषित है, हालांकि मैं और अधिक सामान्य संस्करण fmap का उपयोग करता है का प्रयोग करेंगे:

(.:) :: (Functor f, Functor g) => (a -> b) -> f (g a) -> f (g b) 
(.:) = fmap fmap fmap 

जो दो परतों के माध्यम से सिर्फ fmap सा समारोह मज़दूरों का। कार्यों के लिए, इन तीनों में से fmap एस (.) पर विशेषज्ञ हैं।

+0

ओह। बहुत बढ़िया पुस्तकालय। धन्यवाद। – Ana

+0

अच्छा ले लो '।: '। कार्यों के मुकाबले अन्य मजेदारों के लिए वास्तव में अधिक उपयोगी लगता है। –

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