GHC 7.10 kullanın
Bunları içeren GHC'nin ilk versiyonu 27 Mart 2015 tarihinde yayınlandı .
Bu en son sürüm ve Prelude golf oynamak için yararlı olan bazı yeni eklentiler aldı:
(<$>)ve (<*>)operatörler
Bu kullanışlı operatörler Data.Applicativebunu başardı! <$>adildir fmapdeğiştirmek, böylece map f xve fmap f xile f<$>xher yerde ve bayt geri kazanmak. Ayrıca, listelerde <*>bu Applicativeörnekte kullanışlıdır :
Prelude> (,)<$>[1..2]<*>"abcd"
[(1,'a'),(1,'b'),(1,'c'),(1,'d'),(2,'a'),(2,'b'),(2,'c'),(2,'d')]
(<$)operatör
x<$aeşittir fmap (const x) a; yani bir kabın içindeki her elemanı değiştiriniz x.
Bu genellikle güzel bir alternatiftir replicate: 4<$[1..n]şundan kısa replicate n 4.
Katlanabilir / Gezilebilir Teklif
Aşağıdaki işlevler listelerde [a]çalışmaktan genel Foldabletürlere yükseltildi t a:
fold*, null, length, elem, maximum, minimum, sum, product
and, or, any, all, concat, concatMap
Bu, şimdi "aynı anda Maybe aen fazla bir öğeye sahip listeler" gibi davrandıkları için üzerinde çalıştıkları anlamına gelir . Örneğin, null Nothing == Trueya da sum (Just 3) == 3. Benzer şekilde, değerler için length0 Nothing, Justdeğerler için 1 döndürür . x==Just yYazmak yerine yazabilirsiniz elem y x.
Bunları, \(a, b) -> [b]ilk önce aramışsınız gibi çalışan tülelere de uygulayabilirsiniz . Neredeyse tamamen yararsız, ama or :: (a, Bool) -> Boolbirden karakter kısadır sndve elem bdaha kısadır (==b).snd.
Monoid fonksiyonları memptyvemappend
Çoğu zaman bir hayat kurtarıcı değildir, ancak türünü çıkartabilirseniz mempty, bir bayttan daha kısadır Nothing, yani bu var.