Gunakan GHC 7.10
Versi pertama GHC yang berisi hal-hal ini dirilis pada 27 Maret 2015 .
Ini versi terbaru, dan Prelude mendapatkan beberapa tambahan baru yang berguna untuk bermain golf:
The (<$>)dan (<*>)operator
Operator yang bermanfaat ini Data.Applicativeberhasil masuk! <$>hanya fmap, sehingga Anda dapat mengganti map f xdan fmap f xdengan di f<$>xmana saja dan memenangkan kembali byte. Juga, <*>berguna dalam Applicativecontoh untuk daftar:
Prelude> (,)<$>[1..2]<*>"abcd"
[(1,'a'),(1,'b'),(1,'c'),(1,'d'),(2,'a'),(2,'b'),(2,'c'),(2,'d')]
The (<$)Operator
x<$asetara dengan fmap (const x) a; yaitu mengganti setiap elemen dalam wadah dengan x.
Ini sering merupakan alternatif yang bagus untuk replicate: 4<$[1..n]lebih pendek dari replicate n 4.
Proposal Lipat / Dapat Dilewati
Fungsi-fungsi berikut diangkat dari mengerjakan daftar [a]ke Foldabletipe umum t a:
fold*, null, length, elem, maximum, minimum, sum, product
and, or, any, all, concat, concatMap
Ini berarti mereka sekarang juga bekerja Maybe a, di mana mereka berperilaku seperti "daftar dengan paling banyak satu elemen". Misalnya null Nothing == True,, atau sum (Just 3) == 3. Demikian pula, lengthmengembalikan 0 untuk Nothingdan 1 untuk Justnilai. Alih-alih menulis, x==Just yAnda dapat menulis elem y x.
Anda juga dapat menerapkannya pada tupel, yang berfungsi seolah-olah Anda sudah menelepon \(a, b) -> [b]dulu. Ini hampir sama sekali tidak berguna, tetapi or :: (a, Bool) -> Boolsatu karakter lebih pendek dari snd, dan elem blebih pendek dari (==b).snd.
Fungsi Monoid memptydanmappend
Tidak sering penyelamat, tetapi jika Anda dapat menyimpulkan jenisnya, memptysatu byte lebih pendek dari itu Nothing, jadi itulah.