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.Applicative
bunu başardı! <$>
adildir fmap
değiştirmek, böylece map f x
ve fmap f x
ile f<$>x
her 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<$a
eş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 Foldable
türlere yükseltildi t a
:
fold*, null, length, elem, maximum, minimum, sum, product
and, or, any, all, concat, concatMap
Bu, şimdi "aynı anda Maybe a
en fazla bir öğeye sahip listeler" gibi davrandıkları için üzerinde çalıştıkları anlamına gelir . Örneğin, null Nothing == True
ya da sum (Just 3) == 3
. Benzer şekilde, değerler için length
0 Nothing
, Just
değerler için 1 döndürür . x==Just y
Yazmak 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) -> Bool
birden karakter kısadır snd
ve elem b
daha kısadır (==b).snd
.
Monoid fonksiyonları mempty
vemappend
Ç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.