Usa GHC 7.10
La prima versione di GHC che conteneva questo materiale è stata rilasciata il 27 marzo 2015 .
È l'ultima versione e Prelude ha ottenuto alcune nuove aggiunte utili per il golf:
Gli operatori (<$>)e(<*>)
Questi utili operatori di ce l'hanno Data.Applicativefatta! <$>è giusto fmap, quindi è possibile sostituire map f xe fmap f xcon f<$>xovunque e riconquistare byte. Inoltre, <*>è utile Applicativenell'istanza per gli elenchi:
Prelude> (,)<$>[1..2]<*>"abcd"
[(1,'a'),(1,'b'),(1,'c'),(1,'d'),(2,'a'),(2,'b'),(2,'c'),(2,'d')]
L' (<$)operatore
x<$aè equivalente a fmap (const x) a; cioè sostituire ogni elemento in un contenitore con x.
Questa è spesso una bella alternativa a replicate: 4<$[1..n]è più breve di replicate n 4.
La proposta pieghevole / attraversabile
Le seguenti funzioni sono state portate dal lavoro sugli elenchi [a]ai Foldabletipi generali t a:
fold*, null, length, elem, maximum, minimum, sum, product
and, or, any, all, concat, concatMap
Ciò significa che ora funzionano anche su Maybe a, dove si comportano proprio come "elenchi con al massimo un elemento". Ad esempio null Nothing == True, o sum (Just 3) == 3. Allo stesso modo, lengthrestituisce 0 per Nothinge 1 per i Justvalori. Invece di scrivere x==Just ypuoi scrivere elem y x.
Puoi anche applicarli sulle tuple, che funzionano come se avessi chiamato per \(a, b) -> [b]primo. È quasi completamente inutile, ma or :: (a, Bool) -> Boolè un personaggio più corto di snd, ed elem bè più corto di (==b).snd.
Le funzioni Monoid memptyemappend
Non spesso salva la vita, ma se puoi inferire il tipo, memptyè un byte più corto di Nothing, quindi c'è quello.