Writing Haskell programs I found myself in need of an operator like this.
(|>) :: a -> (a -> b) -> b
(|>) = flip ($)
infixl 0 |>
I think it is useful when glueing many functions together.
tText cs = someFun cs |>
lines |>
map (drop 4) |>
reverse
I prefer it over .
because with |>
the order in which the functions are applied is the same as the order in which the functions are written.
tText' cs = reverse .
map (drop 4) .
lines .
someFun $ cs
Question is: is this (|>
) something that already exists in the Prelude
/ some other basic library? Reimplementing simple stuff is something silly which I would like to avoid.
A Hoogle search did not help. Closest thing I found was >>>
(Arrows), but it seems an overkill.
No, there isn't anything in a standard library that I know of. Years and years ago a lot of my code imported my breif but handy Forwards
module:
> module Forwards where
> infixl 0 |>
> infixl 9 .>
> (|>) = flip ($)
> (.>) = flip (.)
I even used the same name as you!
These days I don't use it much at all - I got used to the order that function composition uses.
Feel free to use your own handy shortcuts.
I also use $
less than I used to. Where I used to write
thing = this $ that arg $ an other $ it
Now I write
thing = this . that arg . an other $ it
The lens
library defines this operator as &
.
You can also define (|>) as "flip id", and understanding why this works is a great lesson in type inference by unification as used in Haskell.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With