जीएचसी 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
। इसी तरह, मानों के लिए length
0 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
, इसलिए ऐसा है।