Tengo una función que uso con bastante frecuencia, lo que me permite escribir mi código de una manera que me parece más natural.Funciones de Haskell de izquierda a derecha
infixl 6 $:
($:) :: a -> (a -> b) -> b
a $: f = f a
Esto me permite hacer algo así como
let x = getData
$: sort
$: group
$: aggregate
en lugar de
let x = aggregate
$ group
$ sort
$ getData
Recientemente he aprendido que Clojure tiene algo como esto construida en (no sé mucho Clojure, pero Creo que se escribiría (-> getData sort group aggregate)
?) Lo que me hace preguntarme si Haskell también lo tiene incorporado. Hoogle doesn't have any results sin embargo.
¿Hay libs estándar con algo similar incluido? Probablemente mi código sea difícil de leer para otros si tengo una parte tan común es idiosincrásico.
Mi preferencia es llamar a esta operación '#' como por OOHaskell, ya que es fundamentalmente la misma operación que la selección del método en los objetos y el '#' es el operador usado para este en OCaml. Alternativamente, al copiar F # podríamos usar '|>' –
Diagrams también usa # it. – Long
Hubo una propuesta para introducir 'flip ($)' a Data.Function, pero se eliminó porque no se pudo llegar a un consenso sobre si tal cosa sería útil (a diferencia de confundir a los principiantes, etc.). Aquí está la discusión: http://markmail.org/message/vsplpb7aajp7goqo?q=python – David