জিএইচসি 7.10 ব্যবহার করুন
জিএইচসি-র প্রথম সংস্করণ যাতে এই স্টাফটি রয়েছে 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, তাই সেখানে।