जीएचसी 7.10 का उपयोग करें
GHC का पहला संस्करण जिसमें यह सामान शामिल था , 27 मार्च 2015 को जारी किया गया था ।
यह नवीनतम संस्करण है, और प्रील्यूड को कुछ नए अतिरिक्त मिले हैं जो गोल्फ के लिए उपयोगी हैं:
(<$>)और (<*>)ऑपरेटरों
इन उपयोगी ऑपरेटरों से Data.Applicativeइसे बनाया है! <$>बस है fmapतो आप की जगह ले सकता, map f xऔर fmap f xसाथ f<$>xहर जगह है और वापस बाइट्स जीतने के लिए। इसके अलावा, सूचियों के लिए उदाहरण <*>में उपयोगी है Applicative:
Prelude> (,)<$>[1..2]<*>"abcd"
[(1,'a'),(1,'b'),(1,'c'),(1,'d'),(2,'a'),(2,'b'),(2,'c'),(2,'d')]
(<$)ऑपरेटर
x<$aके बराबर है fmap (const x) a; यानी हर तत्व को कंटेनर में बदल दिया जाता है x।
यह अक्सर एक अच्छा विकल्प है replicate: 4<$[1..n]की तुलना में कम है replicate n 4।
फोल्डेबल / ट्रैवर्सेबल प्रस्ताव
निम्नलिखित कार्यों को सूचियों पर काम करने से उठाकर [a]सामान्य Foldableप्रकारों में लाया गया t a:
fold*, null, length, elem, maximum, minimum, sum, product
and, or, any, all, concat, concatMap
इसका मतलब है कि वे अब भी काम करते हैं Maybe a, जहां वे "सबसे अधिक एक तत्व के साथ सूचीबद्ध" की तरह व्यवहार करते हैं। उदाहरण के लिए, null Nothing == Trueया sum (Just 3) == 3। इसी तरह, मानों के लिए length0 Nothingऔर 1 रिटर्न Just। लिखने के बजाय x==Just yआप लिख सकते हैं elem y x।
आप उन्हें टुपल्स पर भी लागू कर सकते हैं, जो काम करता है जैसे कि आपने \(a, b) -> [b]पहले फोन किया था। यह लगभग पूरी तरह से बेकार है, लेकिन or :: (a, Bool) -> Boolएक चरित्र की तुलना में छोटा है snd, और इससे elem bछोटा है (==b).snd।
द मोनॉयड फ़ंक्शंस memptyऔरmappend
अक्सर जीवन रक्षक नहीं होता है, लेकिन यदि आप टाइप कर सकते हैं, memptyतो एक बाइट से कम है Nothing, इसलिए ऐसा है।