Use GHC 7.10
La primera versión de GHC que contenía estas cosas fue lanzada el 27 de marzo de 2015 .
Es la última versión, y Prelude tiene algunas nuevas incorporaciones que son útiles para jugar al golf:
Los operadores (<$>)y(<*>)
¡Estos operadores útiles lo Data.Applicativelograron! <$>es justo fmap, para que pueda reemplazar map f xy fmap f xcon f<$>xtodas partes y recuperar bytes. Además, <*>es útil en la Applicativeinstancia para listas:
Prelude> (,)<$>[1..2]<*>"abcd"
[(1,'a'),(1,'b'),(1,'c'),(1,'d'),(2,'a'),(2,'b'),(2,'c'),(2,'d')]
El (<$)operador
x<$aes equivalente a fmap (const x) a; es decir, reemplazar cada elemento en un contenedor por x.
Esta suele ser una buena alternativa a replicate: 4<$[1..n]es más corta que replicate n 4.
La propuesta plegable / transitable
Las siguientes funciones se eliminaron de trabajar en listas [a]a Foldabletipos generales t a:
fold*, null, length, elem, maximum, minimum, sum, product
and, or, any, all, concat, concatMap
Esto significa que ahora también trabajan Maybe a, donde se comportan como "listas con un elemento como máximo". Por ejemplo null Nothing == True, o sum (Just 3) == 3. Del mismo modo, lengthdevuelve 0 para Nothingy 1 para los Justvalores. En lugar de escribir x==Just ypuedes escribir elem y x.
También puede aplicarlos en tuplas, que funciona como si hubiera llamado \(a, b) -> [b]primero. Es casi completamente inútil, pero or :: (a, Bool) -> Booles un personaje más corto que snd, y elem bes más corto que (==b).snd.
Las funciones monoides memptyymappend
No suele ser un salvavidas, pero si puede inferir el tipo, memptyes un byte más corto que Nothing, así que ahí está.