জিএইচসি 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
। একইভাবে, মানগুলির জন্য 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
, তাই সেখানে।