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