Hoogle के अच्छे के लिए इस, और एक ही प्रकार के साथ एक समारोह को खोजने के लिए निश्चित रूप से सही उपकरण।
यह देखते हुए कि यह सीधा है, और यह किसी भी सामान्य स्थानों में नहीं बढ़ रहा है, आप इसे स्वयं को कुछ अस्पष्ट मॉड्यूल से आयात के रूप में लिख सकते हैं, आंशिक रूप से क्योंकि आप अन्य चीजों का पूरा भार आयात नहीं करेंगे।
(एक तरफ: कुछ संकुल hoogle से खोजा होने लगते हैं नहीं है, इसलिए यदि आप समारोह, मॉड्यूल या पैकेज नाम पता है कि तुम के बाद कर रहे हैं और hoogle पता नहीं है, उपयोग hayoo।)
मैं Control.Monad
से
(>=>) :: Monad m => (a -> m b) -> (b -> m c) -> (a -> m c)
प्लग करने के लिए करना चाहते हैं। यह रचना ऑपरेटर है जिसे मैं हमेशा तब तक चाहता था जब तक मुझे यह नहीं मिला। यह एक अधिक प्राकृतिक तरीके से मेरे विचार में >>=
से monads साथ काम करने के लिए है।
तुम भी सीधे इस्तेमाल कर सकते हैं, यह बहुत स्पष्ट है:
f1234 = f1 >=> f2 >=> f3 >=> f4
यह पता चलता है अगर आप (a -> m a) -> (a -> m a) -> (a -> m a)
के लिए hoogle, तो एक भविष्य की रणनीति आप कुछ है जो जोड़ती है कुछ की एक सूची के लिए है के लिए देख रहे हैं एक फ़ंक्शन की खोज करें जो दो को जोड़ती है और fold
फ़ंक्शंस में से किसी एक का उपयोग करें।
इस प्रकार
chain' :: Monad m => [a -> m a] -> a -> m a
chain' = foldr (>=>) return
f1234 = chain' [f1,f2,f3,f4]
या
chain'' :: Monad m => a -> [a -> m a] -> m a
chain'' = flip $ foldr (>=>) return
अगर आप पसंद करते हैं, लेकिन तुम्हारा वैसे भी ठीक है।
एक वैकल्पिक hoogle को सबसे उपयुक्त मॉड्यूल अनुमान लगा और फिर इसके प्रलेखन पृष्ठ ब्राउज़ अंतर्ज्ञान का एक सा के साथ, है। आपको अपना कोड छोटा करने का कोई अन्य तरीका मिल सकता है, या आप याद रखना चाहते हैं कि कुछ अन्य उपयोगी काम मिल सकता है। इस रणनीति आधार पैकेज के साथ और उसके बाद (इकाई और Applictive की तरह, बाद में और अधिक उन्नत Foldable और traversable) 'अमूर्त' मॉड्यूल और पैरामिट्रीकृत patternlike डेटाटाइप्स (जैसे हो सकता है, सूची) के लिए सबसे अच्छा काम करता है। यद्यपि आप इसे अधिक उपयोग किए जाने वाले डेटाटाइप के लिए भी कर सकते हैं (मेरे लिए, मानचित्र/सेट और बाद में मोनाड ट्रांसफॉर्मर्स)। – Laar
'श्रृंखला = foldl (>> =)। वापसी' *** बहुत स्पष्ट है ***, आईएमएचओ। –